我对 Rails、MVC 和 CRUD 非常陌生,我正在尝试使用更新方法来更改帖子的投票数量。我的帖子控制器更新方法中有以下代码:
def update
@post = Post.find(params[:id])
if params[:vote] == 'up'
@post.update_column(:ups => @post[:ups] + 1)
elsif params[:vote] == 'down'
@post.update_column(:downs => @post[:downs] + 1)
end
flash[:notice] = "Thanks for voting! This helps us determine important issues in our schools."
redirect_to 'Posts#index'
end
我的routes.rb中有以下代码:
OpenMCJC::Application.routes.draw do
root :to => 'posts#index'
resources :posts
match '/posts/:id/:vote', :to => 'posts#update'
end
导航到“/posts/3/up”后,它会抛出以下错误:
ArgumentError in PostsController#update
wrong number of arguments (1 for 2)
根据页面的请求参数如下:
{"id"=>"3",
"vote"=>"up"}
你能帮我找出哪里出了问题吗?
update_column有两个参数。你只是通过了一个。
代替:
@post.update_column(:ups => @post[:ups] + 1)
Try:
@post.update_column(:ups, @post[:ups] + 1)
这可能看起来像two论点:
:ups => @post[:ups] + 1
但实际上是one hash.
与较常用的update_attributes,您可以传递一个哈希值:
@post.update_attributes(:ups => @post[:ups] + 1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)