2012-01-12 140 views
1

我是一個完整的Rails新手,我有一個關於控制器和動作的Rails問題。在我的控制器中,我有一個名爲vote的動作。代碼如下。rails 3-在控制器沒有視圖的情況下動作

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

我有一個「秀」視圖按鈕如下

<%= button_to "Vote", :action => "vote", :id => @item.id, %> 

我的問題是,當按下按鈕時,我不希望應用程序嘗試去激活這個動作to/items /:id/vote。我只想執行代碼,然後返回到show view。我非常感謝所有的建議!

回答

3

退房redirect_to,在此代碼的末尾只需調用帶有url或路徑的redirect_to即可,用戶將隨時隨地發送。

如果此票的功能是相同的控制器所展示,你可以做

def vote 

    @item = Item.find(params[:id]) 
    @item.increment(:votes) 
    @item.save 

    redirect_to :action => 'show' 

end 

這將送他們回到你的節目控制器(我也想看看Rails的路徑和URL的功能 - 它們是非常有幫助)

1

應用程序必須去項目/:身份證/投票,這就是你要發送的請求。將該動作添加到您的路線文件中。

如果您使用的物品寧靜的路線,你可以這樣做:

resources :items do 
    member do 
    post 'vote' 
    end 
end 

來源爲上面的代碼是在http://guides.rubyonrails.org/routing.html#resource-routing-the-rails-default

但是,我會建議你花一點時間思考和了解資源的概念。是投票資源嗎?如果是這樣,你最好創建一個VotesController並堅持內置的路線。

希望這會有所幫助。

相關問題