【问题标题】:How to implement Ransack gem如何实现 Ransack gem
【发布时间】:2015-07-22 11:24:29
【问题描述】:

我正在尝试在每个网页的标题处设置一个搜索表单,用于搜索我所有“产品”的名称

我尝试实施 ransack gem,但没有得到产品过滤结果。通过我下面的代码,它只是获取数据库中的所有产品并显示。我只想显示搜索到的产品。

# routes.rb
resources :product do
  collection do
    match 'search' => 'products#search', via: [:get, :post], as: :search
  end
end

# application.controller.rb
before_filter :set_global_search_variable
def set_global_search_variable
  @q = Product.search(params[:q])
  @product_search = @q.result
end

# application.html.erb
<% search_form_for(@q, url: /search, method: :get)  do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name %>
  <%= f.submit %>
<% end %>

# search_index.erb
<% @product_search.each do |product| %>
  <%= image_tag product.image_url %>
    <%= product.name %>
  <% end %>
<% end %>

【问题讨论】:

    标签: ruby-on-rails ransack


    【解决方案1】:

    查看代码

    = search_form_for @product_searcher || Product.ransack, url: main_app.admin_products_path do |f|
    

    控制器代码

    def index
      params[:q] ||= { }
      @product_searcher = Product.ransack(params[:q])
      @products = @product_searcher.result
    end
    

    【讨论】:

    • 感谢@Santhanu,我试过了,但我收到了这个错误No Ransack::Search object was provided to search_form_for!
    • @sreena 抱歉,我修改了答案。试试看。
    • @santhanu 工作正常,这是我的错误,我写错了字段名称。它应该是 name_cont,但我只写了名称。所以它没有用......现在工作正常:)再次感谢你......
    • 是的,使用 sort_link 助手。
    • = sort_link [@product_searcher], :name, "Name",如果名称是产品的列,则按名称排序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    相关资源
    最近更新 更多