我正在尝试为名为Space
的对象创建搜索表单。我尝试过使用了很多if
和elsif
,我意识到它不起作用所以我开始查看Ransack。看起来很棒,如果可以让它发挥作用。
问题是,我的第一页上有我的表格,home#index
。在所有教程中,表单都显示在同一页面上,我想转到spaces#index
,所以这里是我的代码......
主页(index.html.erb)
<div class="col-md-12 text-center">
<%= search_form_for @q, class: "form-inline" do |f| %>
<div class="input-append">
<%= f.label :city %>
<%= f.search_field :city %>
<div class="row">
<button class="btn" type="submit"><i class="fa fa-search"></i></button>
</div>
</div>
<% end %>
</div>
HomeController.rb
class HomeController < ApplicationController
def index
@q = Space.search(params[:q])
@spaces = Space.all
@spaceimages = Spaceimage.all
@spacetypes = @spaces.select(:spacetype).distinct
end
end
SpacesController.rb
def index
@q = Space.search(params[:q])
@spaces = @q.result
end
这就是服务器获得的内容:
Started GET "/spaces?utf8=%E2%9C%93&q%5Bcity%5D=Gothenburg" for 127.0.0.1 at 2015-02-04 21:32:44 +0100
Processing by SpacesController#index as HTML
Parameters: {"utf8"=>"✓", "q"=>{"city"=>"Gothenburg"}}
Space Load (0.2ms) SELECT `spaces`.* FROM `spaces`
Rendered spaces/index.html.erb within layouts/application (1.2ms)
User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1
Completed 200 OK in 52ms (Views: 50.7ms | ActiveRecord: 0.4ms)
所以params在那里,但@spaces.search
(或.ransack
)对查询没有任何作用。为什么呢?
答案 0 :(得分:0)
其他人在看这个: 确保谓词作为查询哈希的键传入,即使您定义了model.ransackable_attributes。
像这样(first_name_cont是这里的谓词):
>> User.ransack(first_name_cont: 'Rya').result.to_sql
=> SELECT "users".* FROM "users" WHERE ("users"."first_name" LIKE '%Rya%')