【发布时间】:2017-01-06 21:25:03
【问题描述】:
这里看起来更好,这是日志,它传递了参数,但它没有传递带有该参数的查询
Started GET "/items?utf8=%E2%9C%93&search=blanca" for 65.34.251.106 at 2016-08-30 03:55:51 +0000
Processing by ItemsController#index as HTML
Parameters: {"utf8"=>"✓", "search"=>"blanca"}
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT 1 [["id", 3]]
Item Load (0.3ms) SELECT "items".* FROM "items" LIMIT 50 OFFSET 0
Item Load (0.2ms) SELECT "items".* FROM "items" ORDER BY "items"."id" ASC LIMIT 1 OFFSET 0
Rendered items/_items.html.erb (3.2ms)
Rendered items/index.html.erb within layouts/application (4.9ms)
这是控制器:
def index
@items = Item.search(params[:search])
end
这是模型:
class Item < ActiveRecord::Base
has_many :stocks
attr_accessible :nombre, :espesor, :material, :quantity
accepts_nested_attributes_for :stocks
attr_accessible :stocks_attributes
self.per_page = 50
# def self.search(search)
# Item.where("nombre LIKE ?", "%#{search}%")
# end
def self.search(search_term)
where("nombre LIKE ?", "%#{search_term}%")
end
protected
end
以及视图中的搜索表单:
<%= form_tag items_path, :method => 'get', :id => "items_search" do %>
<p>
<%= text_field_tag :search, params[:search], class: "form-control" %>
<%= submit_tag "Search", :name => nil, class: "btn btn-danger" %>
</p>
<div id="items"><%= render 'items' %>
</div>
<% end %>
我有一个 _items.html.erb 文件,其中包含要渲染的项目,该部分有效,因为无论我在搜索栏上输入什么,它总是显示所有项目
这是我尝试在控制台中使用 .search 方法时的输出
2.3.0 :041 > Item.search("blanca")
NoMethodError: undefined method `search' for #<Class:0x0000000203fc58>
from /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord- 4.2.6/lib/active_record/dynamic_matchers.rb:26:in `method_missing'
from (irb):41
from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/commands/console.rb:110:in `start'
from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/commands/console.rb:9:in `start'
from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:68:in `console'
from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/commands.rb:17:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
【问题讨论】:
-
你在 Rails 控制台中尝试过
.search吗?日志似乎并没有实际执行where -
为了完整起见,请添加部分内容。
-
部分工作正常,否则我无法获得完整的项目列表,问题在于查询未通过
-
我尝试在控制台中使用搜索时添加了输出
-
@frenciaj,我已经添加了我的答案。如果它解决了您的问题,请告诉我。
标签: mysql ruby-on-rails search