我可以使用 .env
文件使应用程序可以在本地访问环境变量
问题是,我不知道如何在路由中使用变量
我尝试过
的变体get 'v1/packages<%= ENV["key1"] %>' => 'flatfiles#raw'
不幸的是,这不起作用(浏览器说没有路由匹配,但我也可以从运行 rake paths
中看出,这给出了
GET /v1/packages%3C%25=%20ENV[%22key1%22]%20%25%3E(.:format)
我也尝试过
get 'v1/packages#{ENV["key1"]}' => 'flatfiles#raw'
这使得路线
GET /v1/packages%23%7BENV[%22key1%22]%7D
这两种方法似乎都没有像我希望的那样将“key1”变量插入到路由中
为了更好地衡量,我还尝试创建一个 Key
模型,并以这种方式访问它,但路由仍然按字面解释变量
@key1 = Key.find(1).private_key
get 'v1/packages#{@key1}' => 'flatfiles#raw'
GET /v1/packages_and_functions%23%7B@key1%7D
最佳答案
我相信您的错误是尝试在单引号字符串中使用格式字符串:
get 'v1/packages#{ENV["key1"]}' => 'flatfiles#raw'
这意味着字符串被按原样使用。您应该使用双引号,以便 ruby 能够理解您实际上想要字符串中的格式:
get "v1/packages#{ENV['key1']}" => 'flatfiles#raw'
如果您的编辑器对语法着色有适当的支持,您会注意到前一个编辑器将显示为单一颜色,而第二个编辑器将突出显示格式部分 ( #{}
)。
最后,<%= ... %>
语法仅在 ERB 模板中使用,当您编辑某些 .yml
时,Rails 会为您处理该语法。或html.erb
文件,或明确使用 ERB.new(...)
在您的代码中。
HTH
关于ruby-on-rails - 如何在 Rails 5 的路由中使用环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56308551/