Ruby on rails 在按下按钮时有动作的

Ruby on rails 在按下按钮时有动作的,ruby-on-rails,ruby-on-rails-3.1,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" % 这似乎是我的错误发生的地方。当我试图让应用程序运行

我是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。非常感谢您的任何建议!我确信这是一个没有完全理解路由概念的问题,但老实说,我有点困惑。

:method属于HTTP动词,默认值是:post,但是由于您正在更新一个对象,您可能想使用:put

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

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

为了澄清这里发生了什么,请投票表决项目_path@item如果@item.id=1,将生成URL items/1/投票谢谢!我似乎明白背后的逻辑。我想我的问题是,当我按下按钮时,我希望它运行一些代码,然后基本上刷新页面。这个方法似乎想要创建一个全新的页面。
put 'items/:id/vote' => 'items#vote', :as => :vote_item