产品列表的简单搜索功能——Rails 3



我目前正在自学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

谢谢!

您的Item.search(params[:search])给函数search一个参数,即params[:search]

search方法中命名的参数是query,所以在search方法中,query只是代表params[:search]。没有params参数,ruby向你抱怨。

最新更新