gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:45:54 24 4
gpt4 key购买 nike

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

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

如果我在 View 中使用此代码:
<%= link_to('Save Search', saved_search_add_path(current_user, :q => params[:q])) %>

在 Controller 中使用此代码:
  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] .

将查询保存到数据库的代码位于 Users Controller :

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 中使用的代码将搜索查询发送到 Users Controller 是:
<%= 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

我在 View 中创建了指向该已保存搜索的链接:
<%= link_to "Saved Search", search.query %>

关于ruby-on-rails - 如何将 Ransack 搜索保存到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14531426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com