我想在我的主页上的#home页面上放一个搜索表单。我希望能够按类别搜索我的模型。我无法找到一个解决方案,你实际上将逻辑放在与你正在搜索的模型不同的控制器上。我想知道是否有人可以帮助解决语法和需要去的地方。这是我的关系:
vendor.rb
class Vendor < ActiveRecord::Base
validates :category_id, presence: true
belongs_to :category
end
category.rb
class Category < ActiveRecord::Base
has_one :vendor
end
pages_controller.rb
def home
@vendors = Vendor.all
end
的routes.rb
root 'pages#home'
我正在尝试将搜索表单放在home.html.erb上,这是在页面布局下。希望有人可以帮助我如何实现这一目标。这(看似)是一种简单的搜索,我希望不必使用宝石。
编辑:答案 对于那些搜索,这是有效的。谢谢@Vla
vendors_controller.rb
def search
@vendors = Vendor.search(params)
end
pages / home.html.erb (这是我的根'页面#home')
<%= 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 %>
routes.rb (请务必将其置于顶部附近)
get 'vendors/search'
厂商/ search.html.erb
<% @vendors.each do |vendor| %>
<%= vendor.name %>
<%= vendor.phone %>
<%= vendor.email %>
<% end %>
答案 0 :(得分:0)
好的,你可以这样做:
转到您的vendor.rb文件并添加如下搜索方法:
def self.search params
vendors = Vendor.where(category_id: params[:category].to_i) unless params[:category].blank?
vendors
end
然后在您的vendors_controller中创建搜索方法:
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'
进入您的路线并添加&#34;搜索&#34;图。
如果没有搜索操作,您仍然可以执行相同操作,并在您的主页上显示结果。无论如何,我希望你有这个主意。