我可以使环境变量通过.env
文件在本地访问应用程序
问题是,我不知道如何在路径中使用变量
我尝试了
的变体get 'v1/packages<%= ENV["key1"] %>' => 'flatfiles#raw'
不幸的是,这不起作用(浏览器说没有路由匹配,但是我也可以从运行rake routes
得知
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
答案 0 :(得分:2)
我相信您的错误是尝试在单个带引号的字符串中使用格式字符串:
get 'v1/packages#{ENV["key1"]}' => 'flatfiles#raw'
表示该字符串按原样使用。您应该使用双引号代替,以便ruby可以理解您实际上想要字符串中的格式:
get "v1/packages#{ENV['key1']}" => 'flatfiles#raw'
如果您的编辑器对语法着色有适当的支持,您会注意到前一种将显示为单色,而第二种将突出显示格式部分(#{}
)。
最后,<%= ... %>
语法仅在ERB模板中使用,当您编辑某些.yml
或html.erb
文件,或在其中明确使用ERB.new(...)
时,Rails会为您处理您的代码。
HTH