2012-01-11 140 views
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的url?方法=投票时,我只是想让应用程序运行该方法,然后返回到显示页面。任何建议都非常感谢!我确信这是一个不完全理解路由概念的问题,但老实说我有点难过。

回答

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)将生成URL items/1/vote如果@item.id = 1

+0

感谢您的!我似乎理解它背后的逻辑。我想我的问题是,当我点击按钮时,我希望它运行一些代码,然后基本刷新页面。这种方法似乎想要创建一个全新的页面。 – Astephen2 2012-01-12 03:45:11

相关问题