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
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top