【问题标题】:Rails search form with multiple params具有多个参数的 Rails 搜索表单
【发布时间】:2016-02-21 11:09:35
【问题描述】:

我正在研究一个应该接受多个参数的搜索表单。但它目前只接受一个。

我的控制器操作:

def index
  @halls = Hall.order(:name).page(params[:page]).per(9)
  @city = City.all
  @venue_type = VenueType.all
  @event_type = EventType.all

  if !params[:city].blank?
    session[:city] = params[:city]
    city = City.find_by(name: params[:city])
    @halls = @halls.where(:city => city)
  end

  if !params[:venue_types].blank?
    session[:venue_types] = params[:venue_types]
    venue_types = VenueType.find_by(name: params[:venue_types])
    @halls = @halls.where(:venue_types => venue_types)
  end

 if !params[:event_types].blank?
    session[:event_types] = params[:event_types]
    event_types = VenueType.find_by(name: params[:event_types])
    @halls = @halls.where(:event_types => event_types)
  end

结束

我的看法:

<div class="search">
  <%= form_tag(halls_path, :method => "get", class: "navbar-form", id: "search-form") do %>

<%= select_tag "city", options_from_collection_for_select(City.all, "name", "name") %>

          <ul>
            <% @venue_type.each do |venue| %>
                <li>
                  <%= check_box_tag 'venue_type[]', venue.name -%>
                  <%=  venue.name -%>
                </li>
            <% end %>
        </ul>

        <ul>
            <% @event_type.each do |event| %>
                <li>
                  <%= check_box_tag 'event_type[]', event.name -%>
                  <%=  event.name -%>
                </li>
            <% end %>
        </ul>

      <button class="btn" type="submit">Search</button>
<% end %>
</div>

我敢打赌,错误出在控制器上,但作为新手,我找不到它。 不胜感激。

【问题讨论】:

  • 尝试在index 操作中使用puts 打印params,看看您是否收到正确的参数..

标签: ruby-on-rails search-form


【解决方案1】:

您的视图使用以下方式定义了 check_box_tag:

<%= check_box_tag 'venue_type[]', venue.name -%>
<%=  venue.name -%>

<%= check_box_tag 'event_type[]', event.name -%>
<%=  event.name -%>

如您所见,您的控制器必须从 params 获取 :value_type:event_type 而不是 :value_types:event_types。因此,您可以从视图或控制器进行更改,它应该可以工作,但我建议从视图更改如下:

<%= check_box_tag 'venue_types[]', venue.name -%>
<%=  venue.name -%>

<%= check_box_tag 'event_types[]', event.name -%>
<%=  event.name -%>

【讨论】:

  • 谢谢。做过某事。但仍然没有显示与搜索查询匹配的结果。
  • 您能记录您的参数并更新您的问题吗?
猜你喜欢
  • 1970-01-01
  • 2015-05-08
  • 2015-06-15
相关资源
最近更新 更多