Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Rails 4按类别搜索_Ruby On Rails 4_Search Form - Fatal编程技术网

Ruby on rails 4 Rails 4按类别搜索

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 编辑:答案 对于那些搜索的人来说,以下是有效的方法。谢

我想在我的主页pageshome上放一张搜索表。我希望能够按类别搜索我的模型。我还没有找到一个解决方案,在这个解决方案中,你实际上把逻辑放在了不同的控制器上,而不是你正在搜索的模型上。我想知道是否有人可以帮助我理解语法,以及它需要去哪里。以下是我的亲属:

vendor.rb

routes.rb

我正在尝试将搜索表单放在home.html.erb上,它位于页面布局下。我希望有人能帮我完成这件事。这似乎是一种简单的搜索类型,我希望不必使用gem

编辑:答案 对于那些搜索的人来说,以下是有效的方法。谢谢你@Vla

供应商(u controller.rb)

pages/home.html.erb这是我的根“pageshome”

<%= 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'