1

我目前正在自学 Ruby on Rails 3,因为我想编写自己的应用程序和设计(完全是菜鸟)。我正在为一个简单的产品列表编写代码,我想集成一个简单的搜索功能,以便按 item_name 和/或 item_code 搜索项目。我收到此错误:

ItemsController#index 中的名称错误

未定义的局部变量或方法 `params' for #

这是我的代码:

模型

    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争论让 ruby​​ 向你抱怨。

于 2013-06-07T07:45:46.190 回答