现在在 app/views/microposts/home.html.erb 我有..
<% form_tag purchases_path, :method => 'get', :id => "products_search" do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
<% form_tag sales_path, :method => 'get', :id => "sales_search" do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
然后在 micropost.rb 我有
scope :purchases, where(:kind => "purchase")
scope :sales, where(:kind => "sale")
def self.search(search)
if search
where('name LIKE ?', "%#{search}%")
else
scoped
end
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
编辑:
我也尝试过使用
def home
@microposts=Micropost.all
@purchases=@microposts.purchases
@sales=@microposts.sales
end
相反,但随后它给了我错误未定义的方法“购买”#
无论如何,
现在使用 .collect 方法时,我收到一个错误,提示未定义的局部变量或方法“purchases_path”,它对 sales_path 也是如此。
我想要的是有两个搜索表单。在我的微博表中,我有一个名为 kind 的列,可以是“购买”或“销售”。如何更改我的代码,以便一个搜索表单仅搜索并显示具有“购买”类型的微博的结果。然后另一个搜索并仅显示那些带有“销售”类型的微博的结果