我正在使用 Rails 4 进行搜索 - 从Rails强制转换中学习(显然是关于3之前的版本)。 但是,我收到以下错误:
GamesController中的NameError #index undefined局部变量或方法 “搜索”#
这是我的代码
视图:
<%= 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
我做错了什么?
答案 0 :(得分:2)
课程方法
我记得使用Railscast帮助我创建搜索工具
您正在查看的内容是class method - 一种启动课程的方法,并为您创建响应。
以下是class method
在Rails中的工作方式(同时也考虑每个&#34;模型&#34;是class
):
#app/models/game.rb
Class Game < ActiveRecord::Base
def self.search(query)
... logic here
end
end
我相信你遇到的问题是你没有为你的方法申报def
,虽然我不确定你是不是已经发布了你的整个模型代码< / p>
答案 1 :(得分:1)
模特错过了&#39; def&#39;
**def** self.search(search)
if search
where('title LIKE ?', "%#{search}")
else
scoped
end
end
我应该获得n00b徽章。遗憾!