2012-01-11 142 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

相關問題