Есть ли лучшие способы написать этот код? - PullRequest
0 голосов
/ 15 марта 2011
      <% unless params[:date_from].blank? %>
        <input type="hidden" name="date_from" value="<%= params[:date_from] %>"/>
      <% end %>
      <% unless params[:date_to].blank? %>
        <input type="hidden" name="date_to" value="<%= params[:date_to] %>"/>
      <% end %>
      <% unless params[:from_hh].blank? %>
        <input type="hidden" name="from_hh" value="<%= params[:from_hh] %>"/>
      <% end %>
      <% unless params[:from_mm].blank? %>
        <input type="hidden" name="from_mm" value="<%= params[:from_mm] %>"/>
      <% end %>
      <% unless params[:from_ampm].blank? %>
        <input type="hidden" name="from_ampm" value="<%= params[:from_ampm] %>"/>
      <% end %>
      <% unless params[:to_hh].blank? %>
        <input type="hidden" name="to_hh" value="<%= params[:to_hh] %>"/>
      <% end %>
      <% unless params[:to_mm].blank? %>
        <input type="hidden" name="to_mm" value="<%= params[:to_mm] %>"/>
      <% end %>
      <% unless params[:to_ampm].blank? %>
        <input type="hidden" name="to_ampm" value="<%= params[:to_ampm] %>"/>
      <% end %>

Ответы [ 6 ]

5 голосов
/ 15 марта 2011
<% %w(date_from date_to from_hh from_mm from_ampm to_hh to_mm to_ampm).
  reject{|field| params[field].blank? }.each do |field| %>
  <%= hidden_field_tag field, params[field] %>
<% end %>
1 голос
/ 15 марта 2011

вы можете использовать @mpapis подход, который вполне соответствует вашему вопросу с небольшим улучшением:

<% [:date_from, :date_to, :from_hh, :from_mm, :from_ampm, :to_hh, :to_mm, :to_ampm].select{|field| params[field].present? }.each do |field| %>
  <%= hidden_field_tag field, params[field] %>
<% end %>

Но если поля разные, но вам все равно нужно проверить blank? для параметров, вы можете использовать помощники форм с оператором:

# Before
<% unless params[:date_from].blank? %>
  <input type="hidden" name="date_from" value="<%= params[:date_from] %>"/>
<% end %>

# After
<%= hidden_field_tag :date_form, params[:date_form] if params[:date_form].present? %>

Так что теперь вы можете комбинировать все виды элементов формы:

<%= text_field_tag :date_form, params[:date_form] if params[:date_form].present? %>
<%= select_tag :date_form, params[:date_form] if params[:date_form].present? %>

и т.д.

1 голос
/ 15 марта 2011

Как насчет этого:

<% [:date_from, :date_to, :from_hh, :from_mm, :from_ampm, :to_hh, :to_mm, :to_ampm].each do |field| %>
  <%= hidden_field_tag field.to_s, params[field] unless params[field].blank? %>
<% end %>
1 голос
/ 15 марта 2011

В контроллере:

@fields = ["date_from","date_to","from_hh","from_mm","from_ampm","to_hh","to_mm","to_ampm"]

В поле зрения:

<% @fields.each do |f| %>
  <% unless params[f].blank? %>
    <input type="hidden" name="<%= f %>" value="<%= params[f] %>"/>
  <% end %>
<% end %>
1 голос
/ 15 марта 2011

Я думаю, что эти проверки не требуются.Просто используйте все поля ввода без каких-либо проверок.

 <% [:date_from, :date_to, :from_hh, :from_mm, :from_ampm, :to_hh, :to_mm, :to_ampm].each   
 do |field| %>
 <input type="hidden" name="<%= field.to_s %>" value="<%= params[field] %>"/>
 <% end %>

В вашем контроллере вы можете иметь проверку при необходимости

  params.reject{|k,v| v.blank?}
1 голос
/ 15 марта 2011

Да.Я бы пошел на:

<% [:date_from, :date_to, :from_hh, :from_mm, :from_ampm, :to_hh, :to_mm, :to_ampm].each do |field| %>
  <% unless params[field].blank? %>
    <input type="hidden" name="<%= field.to_s %>" value="<%= params[field] %>"/>
  <% end %>
<% end %>

Редактировать : пропустил "пустое" ограничение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...