<% 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 %>
答案 0 :(得分:5)
<% %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 :(得分:1)
是。我会去:
<% [: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 %>
修改:错过了“空白”约束。
答案 2 :(得分:1)
我认为不需要这些检查。 只需使用所有输入字段而无需任何检查。
<% [: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?}
答案 3 :(得分:1)
在控制器中:
@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 %>
答案 4 :(得分:1)
这个怎么样:
<% [: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 %>
答案 5 :(得分:1)
你可以使用@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? %>
等