0

现在在 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 获得了 50 名代表的赏金:如何仅搜索具有特定属性的微博?

4

1 回答 1

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 中被弃用。

于 2012-09-26T23:26:28.597 回答