提交了错误的隐藏字段值

时间:2018-04-29 01:10:41

标签: html ruby-on-rails

我有一个复选框形式,每个复选框都附有一个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"]}}

1 个答案:

答案 0 :(得分:0)

使用数组字符串start_dt_lteq[]

尝试以下操作
<%= hidden_field_tag 'start_dt_lteq[]', (date.to_date + 7.days), input_html: { name: 'week-#{i}' } %>

它将采用所有复选框值。如果您使用此:start_dt_lteq,则只会使用最后一个值。