【问题标题】:Attaching a parameter to each GET Request in Rails在 Rails 中为每个 GET 请求附加一个参数
【发布时间】:2018-12-20 01:42:11
【问题描述】:
看看是否有一个优雅的解决方案可以根据 Rails 应用程序中的会话值向每个 GET 请求添加参数。 (如果需要,4.2.6)
例子:
我们有一个会话变量session[:test] = 123
用户向 example.com/random_path 发出请求
我们希望请求始终附加参数"?test=#{session[:test]}"
因此用户将被路由到 example.com/random_path?test=123
很想听听这方面的任何想法 - 谢谢!
【问题讨论】:
标签:
ruby-on-rails
ruby
ruby-on-rails-4
【解决方案1】:
如果您希望生成的指向该路径的 URL 在生成时始终包含某个参数,您可以为该特定路由编写自己的 url_for 或 link_to 帮助程序,或覆盖 default_url_options 并设置如果操作或控制器名称匹配某些条件,则此参数:
class ApplicationController < ActionController::Base
def default_url_options(options = {})
if controller_name == 'my_controller'
options[:test] = session[:test]
end
options
end
end
【解决方案3】:
路由可以生成为:
random_path(random, test: session[:test])
它将重定向到:
example.com/random_path?test=123
其中 test = session[:test]