现在我有一个名为 Microposts 的对象(我认为)。它是数据库中的一个表,其中有一个名为 kind 的列。这可以是“购买”或“销售”。在主页上,我列出了每个用户的微博列表,分为两个列表。一个只有销售微博,另一个只有购买微博。我试图在这些列表中的每一个顶部放置一个搜索栏,只能搜索这些列表。然后当用户搜索时,该列显示搜索结果。
问题是我找到的所有教程(例如http://railscasts.com/episodes/37-simple-search-form?autoplay=true都通过了如何使用自己的控制器搜索对象(例如,如果我想通过微博搜索)。我怎样才能只搜索购买的微博。还是只搜索那些正在销售的?
编辑:澄清
这是我应该在 app/views/home.html.erb 中添加的内容
<% form_tag microposts_path, :method => 'get' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
但我想要的是其中两个,一个搜索所有具有购买种类(种类是微帖子表中的一列)的微博,另一个搜索所有具有销售种类的微博。我不知道这个的正确语法。
另外,这是我的 microposts_controller.rb 的相关部分
def home
@microposts=Micropost.all
@purchases=@microposts.collect{ |m| m if m.kind == "purchase"}.compact
@sales=@microposts.collect{ |m| m if m.kind == "sale"}.compact
end
编辑2:
对于定义@microposts、@purchases 和@sales,你们都有很好的建议。我认为使用范围是要走的路。但是,我仍然看不到这如何回答这个特定问题。如何区分这两种搜索形式和搜索定义,以便一个搜索所有带有实物销售的微博,一个搜索所有带有实物购买的微博。我希望搜索完全不同。我可以以某种方式识别搜索表单吗?如何在模型中以不同方式定义销售搜索和购买搜索。我知道我应该有类似的东西
def self.search(search)
if search
find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
else
find(:all)
end
end
在 micropost.rb 中。我需要一种购买定义和一种销售定义吗?
再次编辑: