2013-10-14 51 views
0

我试图编辑文章时收到错误:轨道4,参数错误未知密钥,更新控制器

帖子#编辑器:

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:title错误中得到ArgumentError错误。我仍然环绕我的头周围的Rails 4强参数的概念,所以可能有一些做这个...任何想法?

+0

^h您是否在轨道控制台中测试了控制器操作?是否'Post.find(ID:)'返回你的期望? – Nikola

+0

什么是浏览器的URL,当你收到此错误? – tihom

+0

是尼古拉,Post.find(13)控制台内返回的期望是什么... –

回答

2

尝试下面我希望它会帮助你。

def update 
    @post = Post.find(params[:id]) 
    if @post.update(post_params) 
    redirect_to @post 
    else 
    render 'edit' 
    end 
end 
0

我的职位#更新控制器更新到

params[:id] 

而不是

params[:post] 

此修复程序给我带来ForbiddenAttributesError造成

if @post.update_attributes params[:post] 

这是由于与导轨4引入的强参数概念...我固定此用强参数

post_params 

从私有方法代替

params[:post] 

post_params

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

最终解决的关键未知错误:标题