2

私はRoRの初心者です。本(Ruby on Rails 4th edition)によると、私はそれを終えました。しかし、顧客が製品をより簡単に見つけられるように、検索オプションを作成しようとしています. この例で試していますhttp://railscasts.com/episodes/37-simple-search-form

私はこれをビュー>ストア>インデックスに入れました:

<%= form_tag products_path, :method => 'get' do %> 
  <p>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", :name => nil %>
  </p>
<% end %>

モデル>製品にこれを入れました:

def self.search(search)
  if search
    find(:all, :conditions => ['title LIKE ?', "%#{search}%"])
  else
    find(:all)
  end
end

そして controllers>store_controller でこれ:

 @products = Product.search(params[:search])

問題は、私が検索しているときに、私が検索したものだけでなく、所有しているすべての製品が表示され、URLが ...../?utf8=%E2%9C%93&search=iphone+4 に変更されていることです

何かアイデアはありますか?

4

2 に答える 2

4
<% form_tag ...

である必要があります:

<%= form_tag ...
  ^
于 2012-07-13T11:12:17.080 に答える
2

わかりました、見つけました!!! ついに...

store_controllerで、defインデックスに次の行がありました:@products=Product.allそして問題を引き起こします。store_controllerはありません:

class StoreController < ApplicationController
    skip_before_filter :authorize
        @products = Product.all
  def index
    @products = Product.search(params[:search])

    @cart = current_cart
  end
end

そしてクレイジーのように動作します!

于 2012-07-16T11:33:26.840 に答える