Model中的NameError - 搜索表单

时间:2014-08-05 10:28:14

标签: ruby-on-rails ruby-on-rails-4

我正在使用 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

我做错了什么?

2 个答案:

答案 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徽章。遗憾!