现在在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.purchases
@sales=@microposts.sales
end
现在我收到一个错误,说明未定义的局部变量或方法`purchases_path',它对sales_path也是如此。
我想要做的只是搜索一些微博而不是全部微博。在我的微博表中,我有一个名为kind的列,可以是“购买”或“销售”。如何更改这三段代码,以便一个搜索搜索并仅显示那些具有“购买”类型的微博的结果。然后另一个搜索并显示仅具有“销售”类型的微博的结果
这个问题(在另一篇文章中)在RoR: how can I search only microposts with a specific attribute?
有50个代表的赏金答案 0 :(得分:1)
你可以试试这个。
你的模特:
class Micropost
# ...
scope :purchase_only, where(:kind => "purchase")
# ...
def self.search(search)
if search
self.purchase_only.find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
else
self.purchase_only
end
end
end
但是,这些东西对我来说很奇怪。
例如:你应该删除.find(...)
,这个查找器将不推荐使用Rails 4。