2013-02-08 27 views
1

我有以下型號:Rails的使用belongs_to的關聯選擇標籤

產品:

class Product < ActiveRecord::Base 
    belongs_to :user 
... 
end 

用戶

class User < ActiveRecord::Base 
    has_many :products 
end 

在我的產品查看我需要一個下拉的用戶列表,並當用戶被選中時,它應該與該特定產品相關聯。

這是我的看法:

<%= form_tag (update_user_products_path) do %> 
<%@products.each do |product| %> 
      <div class = "prod"> 
      <a href='<%= recommendations_path(:product_id => product.id, :rating_set_id => params[:rating_set_id]) %>' target="_blank"><img src='<%= product.cover_img %>' class='product_image_prods'></img></a> 
      <div class= "title"><small><b><%= link_to truncate(product.title, :length =>30), recommendations_path(:product_id => product.id, :rating_set_id => params[:rating_set_id]), :target => '_blank' %></b></small></div> 
      <br/> 
      <div><em>Current Rating: <%= product.rating %> </em></div> 
      <%= hidden_field_tag :product_id, product.id %> 
      <%= select_tag "user_id", options_for_select(User.all.collect {|u| [ u.name, u.id ] })%> 
      </div> 

      <% end %> 
    <%= submit_tag %> 
<% end %> 

我很困惑,我是否應該使用的form_tag和更新Product.user_id,還是應該在我的產品使用nested_attributes用戶模式的?

UPDATE:

產品控制器動作:

def update_user 
    @product = Product.find(params["product_id"]) 
    @product.update_attribute(:user_id, params[:user_id]) 
    redirect_to :back, :flash => { :notice => "Updated users" } 
    end 

也更新了我的看法。如何使用正確的user_id更新所有產品記錄。目前,當我提交我的時候,它只更新了1個產品記錄。

+0

你打算如何聯繫他們?與Ajax或表單提交? – 2013-02-08 21:18:50

+0

表單提交。 – Yogzzz 2013-02-08 21:26:20

+0

請參閱我更新的問題。 – Yogzzz 2013-02-08 21:40:27

回答

1

您所要做的就是確定哪個用戶與哪個產品相關聯。

例如(與product.id掛鉤標籤)

<%= form_tag(update_user_path, :id => "update_user_form") do %> 
    <%@products.each do |product| %> 
     <%= select_tag "user_id:#{product.id}", options_for_select(User.all.collect {|u| [ u.name, u.id ] })%> 
    <% end %> 
<% end %> 

當你提交你會得到與產品ID和所選擇的用戶ID的關鍵。

例如可以說product.id = 1user.id = 2

params將包括

key => user_id:1 value=> 2 

因此服用鍵和分裂它:會給你product_id然後讓該散列項的值會給你該產品所選的user.id

+0

如何在控制器中分離密鑰和ID?調用params [:user_id]不會返回任何內容。謝謝! – Yogzzz 2013-02-08 23:34:08