【问题标题】:Simple search function for a list of products - Rails 3产品列表的简单搜索功能 - Rails 3
【发布时间】:2013-06-03 10:06:43
【问题描述】:

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

ItemsController#index 中的名称错误

用于#的未定义局部变量或方法`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

谢谢!

【问题讨论】:

  • 你的self.search方法中不需要params[query],试试query吧。

标签: ruby-on-rails ruby ruby-on-rails-3 search web-applications


【解决方案1】:

您的Item.search(params[:search]) 为函数search 提供了一个参数,即params[:search]

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2014-08-06
    • 1970-01-01
    • 2021-10-25
    • 2015-07-16
    相关资源
    最近更新 更多