如何修复Ruby中“没有将nil隐式转换为String”
我正在我的本地机器上开发一个小型Web应用程序。 我想在全球范围内设置一些共同的信息。 这是我的代码:
应用程序/控制器/关切/ site_configuration.rb
module SiteConfiguration mattr_accessor :site_name mattr_accessor :banner_path mattr_accessor :avatar_path mattr_accessor :gallery_path mattr_accessor :category_path end
到config / environment.rb
SiteConfiguration.site_name = 'Site Name Here' SiteConfiguration.banner_path = 'uploads/banners/' SiteConfiguration.avatar_path = 'uploads/avatar/' SiteConfiguration.gallery_path = 'uploads/gallery/' SiteConfiguration.category_path = 'uploads/category/'
应用程序/视图/画廊/ index.html.erb
" alt="" />
这是我收到错误消息
画廊中的TypeError #index
显示D:/xxx/project/app/views/galleries/index.html.erb,其中第1行引发:
没有将nil隐式转换为String
以上代码工作正常。 但是一个大问题是每次需要重新启动服务器时所做的任何更改。
如果我重启服务器,那么它的工作正常。 几分钟后如果需要任何更改我得到相同的错误消息。 让我知道那里有什么问题?
您可以使用延迟评估字符串:
" alt="" />
但更好的是确保,为什么这个领域之一变成nil
? 同时将代码移动到帮助器或装饰器。
要使配置可自定义,请使用config
gem。 所以你只有一个YML文件:
config / settings.yml :
--- site_name: 'Site Name Here' banner_path: 'uploads/banners/' avatar_path: 'uploads/avatar/' gallery_path: 'uploads/gallery/' category_path: 'uploads/category/'
所以在这里你必须使用Settings
常量而不是SiteConfiguration
:
" alt="" />
- 在Rails 3生成器中多次调用任务
- Rails f.select尝试禁用下拉列表进行更改
- Rails基于用户输入的动态数据库连接?
- / usr / bin / env ruby没有这样的文件或目录:使用capistrano 3,capistrano / rbenv,capistrano / bundler和capistrano / rails(使用rails 4)
- Rspec测试失败,当用户被授权访问他拥有的交易时,用户被重定向
- Rails AREL .where声明
- 将Ruby 1.9.2与RubyMine和Matrix结合使用
- 如何从其他Ruby脚本调用标准Rakefile中定义的Rake任务?
- ActiveRecord有两个关联