2

私の見解:

<%= form_tag(update_user_products_path, :id => "update_user_form") 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>
            <%= select_tag "user_id:#{product.id}", options_for_select(User.all.collect {|u| [ u.name, u.id ] })%>
            </div>
            <% end %>
    <%= submit_tag %>
<% end %>

コントローラーの更新アクションに 2 つのパラメーター (各レコードの product.id と選択したレコードの user.id) を送信する必要があります。params.keys を呼び出すと、以下が返されます。

utf8
authenticity_token
user_id:1
user_id:2
user_id:3
user_id:4
...
user_id:78
commit
action
controller

params.keys を (":") で分割できます。これを行うと、params.keys と同じ出力が返されます。update_user アクションに product.id を渡す別の方法はありますか?

4

1 に答える 1

1

選択の名前をに変更できます

<%= select_tag :user_id, options_for_select(User.all.collect {|u| [ u.name, u.id ] }), name: "users[#{product.id}]" %>

params[:users]これにより、キーがproduct_idsで値がuser_idsであるハッシュが得られます

于 2013-02-11T00:41:35.303 に答える