我正在制作一个旅游度假申请。地点搜索基于选择下拉列表中的类别。
但我无法理解程序逻辑。我能够在数据库中加载内容。但无法根据某些类别进行过滤。我制作了一个名为列表的脚手架,并包含了某些参数。在数据库中,它有一行 5 列,即place、description、image_url、price、category。
现在,如果我创建另一个控制器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”是一个类别)
基本上,如何根据某个列值获取行。而且,该逻辑是否也适用于两个选择下拉菜单?
我知道我很接近,但有些不对劲。请帮助我。
非常感谢。