我正在使用Rails 4进行搜索--从Rails强制转换中学习(显然,这是以前的版本3 )。但是,我得到以下错误:
NameError在GamesController#index中未定义的局部变量或方法“搜索”#
这是我的密码
意见:
<%= form_tag games_path, :method => 'get', :id => "games_search" do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
<% end %>主计长:
def search
@games = Game.search(params[:search])
end模型:
self.search(search)
if search
where('title LIKE ?', "%#{search}")
else
scoped
end
end移徙:
def change
create_table :games do |t|
t.string :title
t.date :releaseDate
t.text :description
t.integer :rating
t.timestamps
end
end路线:
resources :games我做错了什么?
发布于 2014-08-05 10:43:07
类方法
我记得我用过那个Railscast来帮助我创建一个搜索工具
您所看到的是所谓的http://www.railstips.org/blog/archives/2009/05/11/class-and-instance-methods-in-ruby/ --一种启动类并为您创建响应的方法。
下面是class method在Rails中的工作方式(还考虑到每个“模型”都是class):
#app/models/game.rb
Class Game < ActiveRecord::Base
def self.search(query)
... logic here
end
end我认为您存在的问题是您没有为您的方法声明def,虽然我不确定,因为您还没有发布完整的模型代码
发布于 2014-08-05 10:43:09
模型漏掉了“def”。
**def** self.search(search)
if search
where('title LIKE ?', "%#{search}")
else
scoped
end
end我应该被授予n00b徽章。抱歉的!
https://stackoverflow.com/questions/25136565
复制相似问题