1

こんにちは、rub アプリケーション用の簡単な検索フォームを開発しています。

スキャフォールドによって生成された既存のコントローラーでアクションを作成しました。

(rails g scaffold Product name description:text price:decimal)

と呼ばれるsearch_productsビューsearch.html.erb

検索ビューには、text_field_tag検索用のパラメーターを挿入する場所があります (もちろん、それらを送信するための送信ボタンもあります)。

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

検索した製品のリストが見つかったproducts_pathにページのルートを送信するを押すと。

search_productsこのエラーが表示されるため、私のアクションでは一種のエラーのようです。

ProductsController#index の NoMethodError

未定義のメソッド「search_products」 #

コントローラーを投稿します:

def self.search_products(search)
    if search
      where(["name LIKE ?","%#{search}%"])
    else
      all 
    end
  end

  # GET /products
  # GET /products.json
  def index
    @products = Product.search_products(params[:search])
  end

これは私の最初の Rails アプリケーションの 1 つであり、愚かなエラーで申し訳ありません。

4

1 に答える 1

3
 def self.search_products(search)
   if search
     where(["name LIKE ?","%#{search}%"])
   else
     all 
   end
 end

このコードは、コントローラーではなく、モデル コードにあるはずです

于 2015-05-25T14:48:34.867 に答える