如何防止某些表单字段显示在查询字符串中?

时间:2014-05-08 16:54:30

标签: ruby-on-rails jquery-ui jquery-ui-datepicker

我有一个报告页面的日期范围选择器,它使用jQueryUI的datepicker。我有两个字段用于开始日期,两个字段用于结束日期:

  <%= form_tag stats_path, :method => 'get', :id => "date-range" do %>
    <%= hidden_field_tag :start_date %>
    <%= text_field_tag :start_date_display %>
    <%= hidden_field_tag :end_date %>
    <%= text_field_tag :end_date_display %>
    <%= submit_tag "Run it!" %>
  <% end %>

目前,正如预期的那样,所有4个字段都作为参数添加到查询字符串中,但我只希望将隐藏字段发送到服务器。文本字段仅用于在用户选择日期时以用户友好格式(例如,5月5日)显示日期。

有没有办法排除它们?

我无法使用:disabled => true来排除它们,因为它会使控件无法使用。

(我喜欢在查询字符串中设置日期范围,以便您可以轻松链接到给定范围的报告。)

1 个答案:

答案 0 :(得分:1)

以下是我使用CoffeeScript解决问题的方法:

  $('#date-range').submit ->
      $(this).find('input[id*="display"]').each ->
          $(this).remove()

但@StuR提出的更好的解决方案是为name属性设置一个空值:

  <%= form_tag stats_path, :method => 'get', :id => "date-range" do %>
    <%= hidden_field_tag :start_date %>
    <%= text_field_tag :start_date_display, '', :name => nil %>
    <%= hidden_field_tag :end_date %>
    <%= text_field_tag :end_date_display, '', :name => nil %>
    <%= submit_tag "Run it!" %>
  <% end %>