0

尝试编辑帖子时收到错误消息:

帖子#编辑控制器:

def edit
 @post = Post.find params[:id]
end

帖子#更新控制器:

def update
 @post = Post.find params[:post]

 if @post.update_attributes params[:post]
  redirect_to posts_path
 else
  render 'edit'
 end
end

编辑视图:

h1 Edit Post
= form_for @post do |f|
 p
  = f.label :title
  = f.text_field :title
 p
  br
 p
  = f.label :content
  = f.text_area :content
 p
  br
 p
  = f.submit 'Update Post'
 p
  br

这是我在 PostsController#update, Unknown Key: 标题错误中得到 ArgumentError 的时候。我仍在思考 Rails 4 中的强参数概念,所以它可能与此有关……有什么想法吗?

4

2 回答 2

2

试试下面的,希望对你有帮助。

def update
  @post = Post.find(params[:id])
  if @post.update(post_params)
    redirect_to @post
  else
    render 'edit'
  end
end
于 2013-10-15T07:49:05.003 回答
0

我将 posts#update 控制器更新为

params[:id]

而不是

params[:post]

这个修复给我带来了ForbiddenAttributesError引起的

if @post.update_attributes params[:post]

这是由于 Rails 4 引入的强参数概念...我通过替换

params[:post]

具有强大的参数

post_params

来自私有方法 post_params

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

最终解决 :title 的未知键错误

于 2013-10-15T14:30:06.837 回答