【问题标题】:How can I save Ransack searches to the database?如何将 Ransack 搜索保存到数据库?
【发布时间】:2013-01-25 22:34:35
【问题描述】:

我正在尝试将 Ransack 搜索保存到数据库中。我相信我应该能够只存储 params[:q] 值,然后在我想召回搜索时将其附加到搜索 URL。不过,我不知道如何保存 params[:q] 值。

Ransack 创建的 URL 是这样的:

http://site.com/search?utf8=%E2%9C%93&q%5Bone%5D=something&q%5Btwo%5D=&q%5Bthree%5D=&q%5Blow_number%5D=0&q%5Bhigh_number%5D=300000&q%5Bfour%5D=&commit=Search

我将保存搜索的操作路线是:

match 'users/:id/saved_search_add' => 'users#saved_search_add', :as => :saved_search_add

如果我在视图中使用此代码:

<%= link_to('Save Search', saved_search_add_path(current_user, :q => params[:q])) %>

在控制器中使用此代码:

  def saved_search_add
    @saved_search = Search.create(:query => params[:q].to_hash, :user_id => @user.id)

    respond_to do |format|
      if @saved_search.save
        format.html { redirect_to(:back) }
      else
        format.html { redirect_to(:back) }
      end
    end
  end

那么存储的数据是:

--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
one: ''
two: ''
three: ''
low_number: '0'
high_number: '300000'
four: ''

所以,我需要在数据进入数据库时​​以某种方式对其进行格式化(也许还因为它即将出来?)...我读过一些关于序列化它的内容,但我没有太多运气得到它上班。

如何将params[:q] 输入我的数据库,以便稍后用于重新创建完整的搜索 URL?

【问题讨论】:

    标签: ruby-on-rails ransack


    【解决方案1】:

    我最终只使用request.fullpath 而不是params[:q]

    将查询保存到数据库的代码在Users控制器中:

    def saved_search_add
      @saved_search = Search.create(:query => params[:q], :user_id => current_user.id)
    
      respond_to do |format|
        if @saved_search.save
          format.html { redirect_to(:back) }
        else
          format.html { redirect_to(:back) }
        end
      end
    end
    

    我在视图中用于将搜索查询发送到Users 控制器的代码是:

    <%= link_to('Save Search', saved_search_add_path(current_user, :q => request.fullpath)) %>
    

    查询值在数据库中存储为:

    /search?utf8=%E2%9C%93&q%5Bone%5D=something&q%5Btwo%5D=&q%5Bthree%5D=&q%5Blow_number%5D=0&q%5Bhigh_number%5D=300000&q%5Bfour%5D=&commit=Search
    

    我在视图中创建了指向该已保存搜索的链接:

    <%= link_to "Saved Search", search.query %>
    

    【讨论】:

      猜你喜欢
      • 2015-09-16
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 2019-12-06
      • 2013-04-24
      相关资源
      最近更新 更多