0

我有一個模型「Products」(這是一個父模型「Assortments」的子模型),可以被用戶喜歡。現在,你只能像產品上的產品展示頁面,因爲我能找到所需的產品ID,這正是我需要像它Rails - 在帖子的索引頁上執行操作

def like 
    @assortment = Assortment.find(params[:assortment_id]) 
    begin 
    current_user.vote_for(@product = Product.find(params[:id])) 
    respond_with @product, :location => assortment_product_path 
    rescue ActiveRecord::RecordInvalid 
    redirect_to @product 
    end 
end 

我也想用戶能夠喜歡產品索引頁上的產品。例如,如果您訪問Pinterest,則可以在流體網格佈局頁面以及每個圖片的相應頁面上查看所有產品。

這是我還沒有學會如何處理Rails的其中一件事。我怎樣才能做到這一點?

提前致謝!節日快樂

+0

完全一樣。將'id'放在'index'視圖的按鈕中。如'button_to'Like',「products/like /#{product.id}」' – Amadan

+0

哦,上帝,如果這是真的,那麼我應該退出開發大聲笑 –

+0

但下面的'product_link_path(id:product.id)'是稍微比'「#{string surgery}」'版本更正確。 C-; – Phlip

回答

2

假設你like行動是在你的ProductsController,並且已經設置@products等於你想爲你的索引頁的產品,而你正在使用ERB,把這樣的事情在你看來:

<% @products.each do |product| %> 
    <%= link_to "Like", product_link_path(id: product.id) %> 
<% end %> 

即使您的設置不同,它也不能太離譜。

+0

我強烈建議'method::post'或'button_to';因爲「like」大概會改變服務器的狀態,所以會違反GET協議。 – Amadan

+0

是的,他沒有具體說明這是什麼樣的行爲。 OP,必要時必須將'method:* verb *'傳遞給'product_link_path'的參數。如果它是'GET',則不必更改任何內容。 – Kaleidoscope

+0

如果是GET,那就錯了。 GET請求不應該改變服務器的狀態,我很肯定「喜歡」某些東西會這樣做。 – Amadan

相關問題