我是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。
显示的错误是
答案 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