1

私は現在、自分のアプリとデザインをコーディングしたいという理由から、Ruby on Rails 3 を独学しています (全く初心者です)。単純な製品リストのコードを書いています。単純な検索機能を統合して、item_name や item_code でアイテムを検索したいと考えています。このエラーが発生しています:

ItemsController#index の NameError

未定義のローカル変数またはメソッド「params」 #

ここに私のコードがあります:

モデル

    class Item < ActiveRecord::Base
      attr_accessible :description, :item_code, :item_name

      validates_uniqueness_of :item_code, :item_name

      validates :item_name, :item_code, :presence => true

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

   end

意見:

    <%= form_tag items_path, :method => 'get' do %>
    <p>
    <%= text_field_tag :search, nil, :placeholder => "Search items here" %>
    <%= submit_tag "Search", :name => nil %>
    </p>

    <% end %>

コントローラ:

    def index
      @items = Item.search(params[:search])
    end

私はこの特定のスクリーンキャストに従っていましたが、何が間違っていたのかわかりません: http://railscasts.com/episodes/37-simple-search-form?autoplay=true

ありがとう!

4

1 に答える 1

1

あなたItem.search(params[:search])は関数searchに引数を与えparams[:search]ます.

メソッドで指定された引数searchqueryであるため、searchメソッドではquery単に を表しparams[:search]ます。paramsルビーがあなたに文句を言う議論はありません。

于 2013-06-07T07:45:46.190 に答える