【问题标题】:Rails filtering row by column using select dropdownRails 使用选择下拉列表逐列过滤
【发布时间】:2013-10-03 10:16:56
【问题描述】:

我正在制作旅游度假申请。地点搜索基于选择下拉列表中的类别。

但我无法理解程序逻辑。我能够在数据库中加载内容。但无法根据某些类别进行过滤。 我制作了一个名为 listing 的脚手架,并包含了某些参数。 在数据库中有一行5列,分别是placedescriptionimage_urlprice、类别。

现在,如果我创建另一个控制器 search,我将无法从选择下拉列表中加载基于类别的行。

Search_controller.rb

def index
    @categories = Listing.find_by_sql("SELECT category FROM listings GROUP BY category").map &:category
    @list = params[:category].blank? ? Listing.all : Listing.find_all_by_category(params[:category])
  end

index.html.erb

<% form_tag(:action => :index) do %>
  <%= select_tag "category", options_for_select(@categories) %>
  <%= submit_tag "Filter" %>
<% end %>

<table>
  <% @list.each do |list| %>
    <tr>
      <td><%= list.place %></td>
    </tr>
  <% end %>
</table>

不显示选择选项。

另外,我尝试在没有选择表单的情况下执行此操作

Search_controller.rb

def index
    @list = Listing.select(:category).map(&:category).uniq
end

Index.html.erb

<% @list.each do |r| %>
<%= r.place %>
<% end %>

它说:undefined method `place' for "sunny":String(其中“sunny”是一个类别)

基本上,如何根据某个列值获取行。而且,该逻辑是否也适用于两个选择下拉菜单?

我知道我很接近,但有些不对劲。请帮助我。

非常感谢。

【问题讨论】:

    标签: ruby-on-rails ruby filtering categories


    【解决方案1】:

    您在 form_tag 之前缺少 =。应该是:

    <%= form_tag(:action => :index) do %>
      <%= select_tag "category", options_for_select(@categories) %>
      <%= submit_tag "Filter" %>
    <% end %>
    

    【讨论】:

    • 您好,感谢您纠正错字。但我想它不起作用。点击过滤器说没有路由匹配搜索 - >索引。我认为必须处理选择标签。如何完成。
    猜你喜欢
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2019-05-19
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    相关资源
    最近更新 更多