如何在Rails的Slim框架中将.env文件变量引入JavaScript标签
在Rails的Slim模板JavaScript中访问.env环境变量的解决方案
问题根源
.env文件格式错误:dotenv工具使用=而非:定义环境变量,导致变量未被正确加载- 模板变量处理不当:将环境变量用引号包裹为字符串,若变量未加载成功,空字符串与数字相乘结果为0
- 缺少必要依赖:Rails默认不会自动加载
.env文件,需依赖dotenv-railsgem实现该功能
解决步骤
1. 安装并配置dotenv-rails
在项目的Gemfile中添加依赖:
gem 'dotenv-rails', groups: [:development, :test]
执行命令安装:
bundle install
2. 修正.env文件格式
将原有的冒号替换为等号,确保变量能被正确解析:
NUMBER_TO_MULTIPLY=2
3. 调整Slim模板中的JavaScript代码
确保环境变量被解析为数值类型,避免字符串干扰计算:
javascript: $(document).ready(function() { var count = selectedRows.length; // 取值为3 var multiplier = #{ENV['NUMBER_TO_MULTIPLY'].to_i}; var totalCount = count * multiplier; alert(totalCount); // 预期输出6 });
4. 重启Rails服务器
dotenv在服务器启动时加载.env文件,修改配置后必须重启服务器才能生效。
额外注意事项
Rails.env仅返回当前Rails运行环境(如development/production),并非获取自定义环境变量的方式,自定义变量需通过ENV['变量名']访问- 生产环境建议使用服务器自带的环境变量配置(如云平台的config vars),避免将敏感信息存入
.env文件;若需在生产环境使用dotenv,需调整gem的groups或设置ENV['DOTENV']=true
内容的提问来源于stack exchange,提问作者Naresh Kumar P
相关产品推荐
相关产品推荐

