在按钮按下时执行的操作
问题描述:
我是一个有Rails的新手,我有我认为是一个非常简单的问题。我正在设计一个投票应用程序。按下按钮后,选票数量增加1。该控制器方法代码如下所示:在按钮按下时执行的操作
def vote
@item = Item.find(params[:id])
@item.increment(:votes)
@item.save
redirect_to :show
end
按钮具有编码:
%= button_to "Vote", :method => "Vote" %
这似乎是在我的错误发生。它试图去//id的url?方法=投票时,我只是想让应用程序运行该方法,然后返回到显示页面。任何建议都非常感谢!我确信这是一个不完全理解路由概念的问题,但老实说我有点难过。
答
: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)
将生成URL items/1/vote
如果@item.id = 1
感谢您的!我似乎理解它背后的逻辑。我想我的问题是,当我点击按钮时,我希望它运行一些代码,然后基本刷新页面。这种方法似乎想要创建一个全新的页面。 – Astephen2 2012-01-12 03:45:11