Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

ActiveModel::ForbiddenAttributesError aula 6

class CommentsController < ApplicationController
  def create
    @job = Job.find(params[:job_id])
    @comment = @job.comments.build(params[:comment])
    if @comment.save
      flash[:notice] = "Comment was created with success!"
    else
      flash[:alert] = "Please fill in all fields to create a comment."
    end
    redirect_to @job
  end
end

Esta linha de código -> @comment = @job.comments.build(params[:comment])

Retorna este erro -> ActiveModel::ForbiddenAtrributesError

Procurei um pouco pela internet e a sintaxe do método parece estar correta, então fiquei meio perdido. Pode ser que esteja ocorrendo este erro pela versão do rails que estou utilizando (5.0.1) e nesta versão este método ter sido modificado ou substituido.

2 respostas
solução!

Oi Felipe, acho que você precisa configurar os parâmetros que estão liberados de serem recebidos, por conta do mass assignment. Dá uma olhada nisso? No rails 5 eles devem exigir que o controller defina quis parâmetros podem ser recebidos, para que ninguém tente burlar a regra.

Olá Alberto, era isso mesmo, levei um tempo para compreender, mas funcionou, valeu ae. Ficou assim o código:

class CommentsController < ApplicationController
    def create
        @job = Job.find(params[:job_id])
        @comment = @job.comments.build(comment_params)
        if @comment.save
            flash[:notice] = 'Comentário criado com sucesso!'
        else
            flash[:alert] = 'Por favor preencha todos os campos para criar um comentário!'
        end
        redirect_to @job
    end

    def comment_params
        return params.require(:comment).permit(:name, :body)
    end
end

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software