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 についても同じことが起こります。

私ができるようにしたいのは、すべてのマイクロポストではなく、一部のマイクロポストのみを検索することです。私のマイクロポストテーブルには、「購入」または「販売」のいずれかになる種類という列があります。これら 3 つのコードを変更して、1 回の検索で種類が「購入」のマイクロポストのみを検索して結果を表示するにはどうすればよいでしょうか。そして、もう一方は、種類が「セール」のマイクロポストのみを検索して結果を表示します。

この質問 (別の投稿) には、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(...)があります。このファインダーはRails4で非推奨になります。

于 2012-09-26T23:26:28.597 に答える