我有一个复选框形式,每个复选框都附有一个hidden_field。
每当用户提交表单时,始终会提交最后一个hidden_field的值。为什么呢?
<%= search_form_for @q, id: "filters_click", remote: true do |f| %>
<div id="dates">
<% i = 1 %>
<% @weeks.each do |date| %>
<div class="ck-button ">
<label class="d-flex h-100 justify-content-center">
<%= hidden_field_tag :start_dt_lteq, (date.to_date + 7.days), input_html: { name: 'week-#{i}' } %>
<%= radio_button_tag :start_dt_gteq, date, nil, class: "date" %>
<span class="align-self-center">
Week <br />
<%= i %>
<% i += 1 %>
</span>
</label>
</div>
<% end %>
</div>
<% end %>
更新:在回复评论后,点击复选框后会收到以下结果:
建议编辑:
<%= hidden_field_tag 'start_dt_lteq[]', (date.to_date + 7.days), input_html: { name: 'week-#{i}' } %>
结果:
Parameters: {"utf8"=>"✓", "start_dt_lteq"=>["2018-04-02", "2018-04-09", "2018-04-16", "2018-04-23", "2018-04-30", "2018-05-07", "2018-05-14", "2018-05-21", "2018-05-28", "2018-06-04", "2018-06-11", "2018-06-18"], "q"=>{"start_dt_gteq"=>["2018-04-23"]}}
它应该是什么:
Parameters: {"utf8"=>"✓", "start_dt_lteq"=>["2018-04-30"], "q"=>{"start_dt_gteq"=>["2018-04-23"]}}
答案 0 :(得分:0)
使用数组字符串start_dt_lteq[]
<%= hidden_field_tag 'start_dt_lteq[]', (date.to_date + 7.days), input_html: { name: 'week-#{i}' } %>
它将采用所有复选框值。如果您使用此:start_dt_lteq
,则只会使用最后一个值。