今 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
代わりに、エラー undefined method `purchases' for # が表示されます
アンウェイズ、
現在、.collect メソッドを使用すると、未定義のローカル変数またはメソッド「purchases_path」というエラーが表示され、sales_path についても同じことが起こります。
私が欲しいのは、2つの検索フォームを持つことです。私のマイクロポストテーブルには、「購入」または「販売」のいずれかになる種類という列があります。1 つの検索フォームが「購入」という種類のマイクロポストのみを検索して結果を表示するようにコードを変更するにはどうすればよいですか。そして、もう一方は、種類が「セール」のマイクロポストのみを検索して結果を表示します。