0

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

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

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

搜索控制器.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>

它不显示选择选项。

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

搜索控制器.rb

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

索引.html.erb

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

它说:“sunny”的未定义方法“place”:字符串 (其中“sunny”是一个类别)

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

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

非常感谢。

4

1 回答 1

0

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

<%= form_tag(:action => :index) do %>
  <%= select_tag "category", options_for_select(@categories) %>
  <%= submit_tag "Filter" %>
<% end %>
于 2013-10-03T12:44:34.023 回答