Ruby on rails 4 Rails 4按类别搜索
我想在我的主页pageshome上放一张搜索表。我希望能够按类别搜索我的模型。我还没有找到一个解决方案,在这个解决方案中,你实际上把逻辑放在了不同的控制器上,而不是你正在搜索的模型上。我想知道是否有人可以帮助我理解语法,以及它需要去哪里。以下是我的亲属: vendor.rb routes.rb 我正在尝试将搜索表单放在home.html.erb上,它位于页面布局下。我希望有人能帮我完成这件事。这似乎是一种简单的搜索类型,我希望不必使用gem 编辑:答案 对于那些搜索的人来说,以下是有效的方法。谢谢你@Vla 供应商(u controller.rb) pages/home.html.erb这是我的根“pageshome”Ruby on rails 4 Rails 4按类别搜索,ruby-on-rails-4,search-form,Ruby On Rails 4,Search Form,我想在我的主页pageshome上放一张搜索表。我希望能够按类别搜索我的模型。我还没有找到一个解决方案,在这个解决方案中,你实际上把逻辑放在了不同的控制器上,而不是你正在搜索的模型上。我想知道是否有人可以帮助我理解语法,以及它需要去哪里。以下是我的亲属: vendor.rb routes.rb 我正在尝试将搜索表单放在home.html.erb上,它位于页面布局下。我希望有人能帮我完成这件事。这似乎是一种简单的搜索类型,我希望不必使用gem 编辑:答案 对于那些搜索的人来说,以下是有效的方法。谢
<%= form_tag vendors_search_path, method: :get do |f| %>
<%= text_field_tag :search, params[:search], placeholder: "Search Vendors" %>
<%= select_tag 'category', options_for_select(Category.all.map{|el| [el.name, el.id]}) %>
<%= submit_tag 'Search' %>
<% end %>
供应商/search.html.erb
好的,你可以这样做: 转到vendor.rb文件并添加如下搜索方法:
def self.search params
vendors = Vendor.where(category_id: params[:category].to_i) unless params[:category].blank?
vendors
end
然后在您的“供应商”\u控制器中创建搜索方法:
def search
@vendors = Vendor.search(params)
end
然后在主页上创建表单,类似于:
= form_tag search_vendors_path, method: :get, role: 'form' do
.form-group
%label Category
= select_tag 'category', options_for_select(Category.all.map{|el| [el.name, el.id]}), class: 'form-control'
= submit_tag 'Search'
别忘了把
get 'vendors/search'
进入路线并添加搜索视图
你仍然可以做同样的事情,不需要搜索操作,搜索结果会显示在你的主页上。无论如何,我希望你能想到。哪一页将呈现结果?我个人会将“vendorsindex”作为根目录,并将搜索参数发送到索引,或发送搜索操作,然后重新呈现索引。如果您的PigSHead动作包含了除了@供应商以外的任何东西,我可能会考虑另一种方法,但到目前为止,它看起来像是一个VANDORNSDEX操作。你的观点是如何组织的?页面/主页是部分的吗?把责任分开。
<%= form_tag vendors_search_path, method: :get do |f| %>
<%= text_field_tag :search, params[:search], placeholder: "Search Vendors" %>
<%= select_tag 'category', options_for_select(Category.all.map{|el| [el.name, el.id]}) %>
<%= submit_tag 'Search' %>
<% end %>
get 'vendors/search'
<% @vendors.each do |vendor| %>
<%= vendor.name %>
<%= vendor.phone %>
<%= vendor.email %>
<% end %>
def self.search params
vendors = Vendor.where(category_id: params[:category].to_i) unless params[:category].blank?
vendors
end
def search
@vendors = Vendor.search(params)
end
= form_tag search_vendors_path, method: :get, role: 'form' do
.form-group
%label Category
= select_tag 'category', options_for_select(Category.all.map{|el| [el.name, el.id]}), class: 'form-control'
= submit_tag 'Search'
get 'vendors/search'