创建新条目时ActiveModel :: ForbiddenAttributesError

时间:2015-03-20 01:29:00

标签: ruby-on-rails

我是ruby on rails的新手,当我最终遇到“ActiveModel :: ForbiddenAttributesError”时,我正试图创建一个简单的应用程序

class PostsController < ApplicationController
def index
    @posts = Post.all       
end
def show
    @post = Post.find(params[:id])

end

def new
    @post =Post.new
end

def create


    @post = Post.new(params[:post])

    if  @post.save
        redirect_to post_path,:notice=>"success"
    else
        render "new"
    end

end

def edit

end

def update

end


def destroy
end

私有

def post_params
  params.require(:post).permit(:Title, :content)
end

我在ActiveModel::ForbiddenAttributesError when creating new user上看到了类似的错误,但解决方法并没有解决我的问题

我的rails版本是4.2.0。

显示的错误是

enter image description here

4 个答案:

答案 0 :(得分:1)

@post = Post.new(params[:post])更改为@post = Post.new(post_params)

答案 1 :(得分:1)

你不能在任何质量分配方法中直接使用params[:post]哈希(或任何params[*]哈希),你需要使用permit调用,所以Rails知道你已经检查并允许它。

因此,请将Post.new更改为@post = Post.new(post_params)

答案 2 :(得分:0)

我认为

def create
  @post = Post.new post_params
  if @post.save
    flash[:success] = "Created new post"
    redirect_to @post
  else
    render 'new'
  end
end

答案 3 :(得分:0)

def create
  @post = Post.new(posts_params)
  if  @post.save
    redirect_to post_path,:notice=>"success"
  else
    render "new"
  end
end

private

def posts_params
  params.require(:post).permit(:Title, :content)
end