Pergunta

Estou acompanhando uma série de vídeos, onde o autor está criando um CMS simples usando RoR 4, mas atualmente tenho o RoR 3.x instalado.Segui todo o código até um "T", mas quando tento criar um assunto simples no CMS simples, recebo um erro.Então eu verifiquei o log/production.log

E estou recebendo o seguinte erro,TypeError (no implicit conversion of Symbol into String):

O código do controlador se parece com o seguinte,

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

E o método privado que criei para o assunto novos parâmetros se parece com o seguinte

 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
Foi útil?

Solução

O autor diz que você precisa mudar @subject = Subject.new(subject_params) para @subject = Subject.new(params[:subject]).

params.require(:subject).permit(:name, :position, :visible) é um recurso do Rails 4 chamado Parâmetros Fortes.Se você é novo no Rails, eu sugiro que você use a versão que o autor usa para aliviar problemas de versões futuras como este.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top