【发布时间】:2015-11-13 12:48:36
【问题描述】:
我想通过可能的 2 个参数进行搜索,但也不需要两者都存在。现在,如果未选择任何内容,则 state_id 传递为“”,我不知道如何摆脱它。
查看:
<div dropdown-toggle>
<%= form_tag('/municipalities', method: :get) do %>
<%= select_tag(options_for_select(@dropdown), {:allow_blank => "Please select"}, class: "btn btn-default btn-lg dropdown-toggle") %>
<%= submit_tag "Search", class: "btn btn-default"
%>
<%= link_to "Reset", municipalities_path, class: "btn btn-default" %>
<%= button_tag 'Counties Only', name: "municipality_type", value: "County", class: "btn btn-default pull-right" %>
<% end %>
</div>
控制器(我还是新人,所以这还不够干净)
def index
@dropdown = State.all.map{ |s| [s.state, s.id]}
@municipality = Municipality.order(:name)
@count = @municipality.count
if !params[:state_id].to_s.blank? && params[:municipality_type].present?
@municipalities = Municipality.where(municipality_type: params[:municipality_type], state_id: params[:state_id])
@forms = Form.where(municipality_id: @municipalities, state_id: @state)
if !params[:state_id].blank?
@present = params[:state_id]
@state = params[:state_id]
@state_name = State.find(@state)
end
@count_state = @municipalities.count
elsif params[:state_id].present?
@present = params[:state_id]
@state = params[:state_id]
@state_name = State.find(@state)
@municipalities = Municipality.where(state_id: @state)
@forms = Form.where(municipality_id: @municipalities)
@count_state = @municipalities.count
else
@forms = nil
@state = State.all
@municipalities = Municipality.order(:name)
end
end
【问题讨论】:
-
您要搜索哪种型号?
标签: ruby-on-rails forms search