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

时间:2015-05-21 13:01:34

标签: ruby-on-rails ruby-on-rails-4 model-view-controller

我正在创建一个用户可以选择产品和数量的表单。我需要将id值从对象@event传递给控制器​​,但我不知道这是正确的方法。就像现在一样,控制器中的params[: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 %>
            <%= submit_tag "GO!",params[:event_id] => @event.id,:class => 'btn btn-default'  %>
          </div>

3 个答案:

答案 0 :(得分:3)

在表单中添加隐藏字段并将其值设置为 @ 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]

答案 1 :(得分:2)

&lt;%= hidden_​​field_tag:event_id,@ event.id%&gt;

所以这将在params [:event_id]中提供。

答案 2 :(得分:1)

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

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

它将在控制器中显示为

 params[:event_id]