基于关联Rails 4搜索查询

时间:2015-01-07 20:25:36

标签: mysql ruby-on-rails

我正在使用Rails4。我想搜索所有metal_type的产品:Gold.metal_type在metal_spec表中。 产品belongs_to metal_spec,metal_type是boolean,如果它的1则是它的Gold。

Product.rb

def self.search(query)
 self.joins(:metal_spec).to_a.where(metal_type: "#{query}")
end

在产品控制器

@products = Product.search(params[:search]).to_a

在模板中

<%= form_tag(sub_category_products_path(params[:sub_category_id]), :method => "get", id: "search-form") do %>
  <%= select_tag "search", "<option>0</option><option>1</option>".html_safe%>
  <%= submit_tag "Search", :name => nil %>
<% end %>   

它不起作用,请帮忙。 在此先感谢

1 个答案:

答案 0 :(得分:1)

这段代码应该这样做:

# product.rb
def self.search(query)
  self.joins(:metal_spec).where(metal_spec: { metal_type: query })
end

此外,您的select_tag

稍有改进
select_tag "search", options_for_select([0, 1])

如果您想使用radio_button_tag而不是select_tag

radio_button_tag 'search', 0, params[:search] == '0'
radio_button_tag 'search', 1, params[:search] == '1'

此处有关rabio_button_tag的文档:http://apidock.com/rails/ActionView/Helpers/FormTagHelper/radio_button_tag

  

radio_button_tag(name,value,checked = false,options = {})