ruby-on-rails
  • ruby-on-rails-3
  • ruby-on-rails-3.1
  • ruby-on-rails-3.2
  • 2013-02-10 70 views 2 likes 
    2

    筆者認爲:通過select_tag發送額外的參數值的方式

    <%= 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個PARAMS到我的控制器更新動作 - 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相同的輸出。是否有另一種方法可以將product.id傳遞給我的update_user操作?

    回答

    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

    +0

    你能張貼在另一個問題?一定要包括控制器代碼:) – jvnill 2013-02-11 01:46:25

    +0

    我想通了:)。我必須遍歷product_ids和user_ids;我的方法最初只是遍歷product_ids。非常感謝你! – Yogzzz 2013-02-11 01:49:52

    相關問題