El controlador de la aplicación web Ruby on Rails genera un error
-
20-12-2019 - |
Pregunta
Estoy siguiendo una serie de videos en los que el autor crea un CMS simple usando RoR 4, pero actualmente tengo instalado RoR 3.x.Seguí todo el código hasta la "T", pero cuando intento crear un asunto simple en el CMS simple, aparece un error.Así que revisé el log/production.log
Y recibo el siguiente error,TypeError (no implicit conversion of Symbol into String):
El código del controlador se parece al siguiente,
def create
# Instantiate a new object using form parameters
# the below line should work with rails v3.x
# @subject = Subject.new(params[:subject])
@subject = Subject.new(subject_params)
# Save the object
if @subject.save
# add flash hash
flash[:notice] = "Subject created successfully."
# if save succeeds, redirect to the index action
redirect_to(:action => 'index')
else
# if save fails, redisplay the form so user can fix problems
render('new')
end
end
Y el método privado que creé para los nuevos parámetros del sujeto se parece al siguiente
private
def subject_params
# same as using "params[:subject]", except that it:
# - raises an error if :subject is not present
# - allows listed attributes to be mass-assigned
params.require(:subject).permit(:name, :position, :visible)
end
Solución
El autor te dice que necesitas cambiar. @subject = Subject.new(subject_params)
a @subject = Subject.new(params[:subject])
.
params.require(:subject).permit(:name, :position, :visible)
es una característica de Rails 4 llamada Parámetros fuertes.Si es nuevo en Rails, le sugiero que utilice la versión que utiliza el autor para aliviar problemas de versiones futuras como este.