Ruby on rails [Ruby on rails]如何通过不同的控制器视图维护URL参数?

Ruby on rails [Ruby on rails]如何通过不同的控制器视图维护URL参数?,ruby-on-rails,Ruby On Rails,我正在开发一个可以跟踪不同类型合同的应用程序,我的任务是制作一个多重过滤功能,但是,当用户在视图之间移动时,他的标准应该保持不变,这样当他们返回主视图时,就不必再输入主视图,通过每个链接传递它们是不可行的,因为我限制了搜索参数,所以根本不起作用 起初,我认为覆盖默认的_url _options选项方法是一个足够好的解决方案,但这会产生比它解决的问题更多的问题,因为现在参数非常粘稠,很难去除 那么,通过控制器的不同视图维护此参数的更好方法是什么 我的代码: class ContractsContr

我正在开发一个可以跟踪不同类型合同的应用程序,我的任务是制作一个多重过滤功能,但是,当用户在视图之间移动时,他的标准应该保持不变,这样当他们返回主视图时,就不必再输入主视图,通过每个链接传递它们是不可行的,因为我限制了搜索参数,所以根本不起作用

起初,我认为覆盖默认的_url _options选项方法是一个足够好的解决方案,但这会产生比它解决的问题更多的问题,因为现在参数非常粘稠,很难去除

那么,通过控制器的不同视图维护此参数的更好方法是什么

我的代码:

class ContractsController < ApplicationController
....
private

 def search_params
  params.permit(:contractor_id,  :starting_date, 
  :ending_date, :state, :proccess_number).delete_if 
  {|key, value| value.blank? }
 end

 def default_url_options (options={})
  search_params
 end 
 ....
end
class ContractsController

提前感谢

< P>您可能需要考虑将这些变量存储在用户的会话中。这样,您就不会依赖于在视图之间重新提交参数

这样你就可以做到:

session[:contractor_id] = params[:contractor_id]
session[:starting_date] = params[:starting_date]
在不同的操作中,您可以检索它:

session[:contractor_id]
session[:starting_date]

您可能想考虑将这些变量存储在用户的会话中。这样,您就不会依赖于在视图之间重新提交参数

这样你就可以做到:

session[:contractor_id] = params[:contractor_id]
session[:starting_date] = params[:starting_date]
在不同的操作中,您可以检索它:

session[:contractor_id]
session[:starting_date]

刚刚试过,效果非常好!然而,我没有为每个参数创建一个会话变量,而是创建了一个包含整个参数散列的会话变量,这样我就可以更轻松地操作它。只是尝试了一下,效果非常好!然而,我没有为每个参数创建一个会话变量,而是创建了一个包含整个params散列的会话变量,这样我就可以更轻松地操作它。