从视图到控制器的自定义参数

Custom parameters from view to controller

我正在创建一个表单,用户可以在其中选择产品和数量。我需要将对象 @eventid 值传递给控制器​​,但我不知道正确的方法是什么。就像现在一样,控制器中的 params[:event_id] 字段始终为 nil。

 <%= form_tag logic_giveRandomGifts_path :method => 'post' %>
          <div class="form-group">
            <%= collection_select(:params, :product_id, Product.all, :id, :name, :prompt => true) %>
            Quantidate:
            <%= text_field_tag :quantity, params[:quantity], :size => 2 %>
            <%= submit_tag "GO!",params[:event_id] => @event.id,:class => 'btn btn-default'  %>
          </div>

<%= hidden_field_tag :event_id, @event.id %>

所以这将在参数[:event_id]中可用。

在表单中添加隐藏字段并将其值设置为 @event.id

 <%= form_tag logic_giveRandomGifts_path :method => 'post' %>
  <div class="form-group">
    <%= collection_select(:params, :product_id, Product.all, :id, :name, :prompt => true) %>
    Quantidate:
    <%= text_field_tag :quantity, params[:quantity], :size => 2 %>
    <%= hidden_field_tag :event_id, value: @event.id%> #add this
    <%= submit_tag "GO!",params[:event_id] => @event.id,:class => 'btn btn-default'  %>
  </div>
<% end %>

您现在可以在控制器中使用事件 ID 作为 params[:event_id]

只需在表单中传递一个隐藏字段,如下所示

<%= hidden_field_tag :event_id, value: @event.id%>

它将在控制器中作为

提供
 params[:event_id]