按下按钮后执行操作

时间:2012-01-11 04:19:19

标签: ruby-on-rails ruby-on-rails-3.1

我是Rails的新手,我相信这是一个非常简单的问题。我正在设计一个投票申请表。按下按钮后,投票数增加1。控制器方法代码如下所示:

def vote
  @item = Item.find(params[:id])
  @item.increment(:votes)
  @item.save
  redirect_to :show
end

该按钮的代码为:

%= button_to "Vote",  :method => "Vote" % 

这似乎是我的错误发生的地方。当我试图让应用程序运行该方法然后返回到显示页面时,它试图转到/:id?method = Vote的url。任何建议都非常感谢!我确信这是一个不完全理解路由概念的问题,但说实话,我有点难过。

1 个答案:

答案 0 :(得分:0)

:method与HTTP谓词有关,默认为:post,但由于您要更新对象,因此您可能希望使用:put

button_to "Vote", vote_item_path(@item), :method => :put

其中@item是您的Item对象。您还需要定义路线

put 'items/:id/vote' => 'items#vote', :as => :vote_item

为澄清此处发生的情况,如果vote_item_path(@item)

items/1/vote将生成网址@item.id = 1