加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何将Ransack搜索保存到数据库?

发布时间:2020-12-17 03:22:41 所属栏目:百科 来源:网络整理
导读:我正在尝试将Ransack搜索保存到数据库中.我相信我应该能够存储params [:q]值,然后在我想要回忆搜索时将其附加到搜索URL.不过,我不知道如何保存params [:q]值. Ransack创建的URL是这样的: http://site.com/search?utf8=%E2%9C%93q%5Bone%5D=somethingq%5Bt
我正在尝试将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?

解决方法

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

将查询保存到数据库的代码位于用户控制器中:

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

我在View中用来将搜索查询发送到用户控制器的代码是:

<%= link_to('Save Search',: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 %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读