2016-06-01 1 views
1

ローカルマシンに小さなWebアプリケーションを1つ開発しています。私はいくつかの共通情報を世界中に設定したい。ここ は私のコードです:Rubyの「暗黙の文字列への変換なし」を修正するには

アプリ/コントローラ/懸念/ 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/' 

アプリ/ビュー/ギャラリー/インデックス.html.erb

/xxx/project/app/views/galleries/index.html.erbライン#:ここ

は、私は、エラーメッセージにギャラリー#指数Dを表示

TypeError例外を取得していますです1は発生しません:

コード作業罰金上記の文字列

にはnilのない暗黙の変換。しかし、大きな問題の1つは、サーバーを再起動する必要があるたびに私が行った変更です。

サーバを再起動すると正常に動作します。数分後に変更が必要な場合は、同じエラーメッセージが表示されます。私はそこに何が問題なのか教えてください。

+0

だけドン」

のconfig/settings.ymlの:だからあなただけYMLファイルを持っていますあなたのerbに無関係の変数を送信する前に、それをチェックしてください! –

答えて

2

あなたは文字列に遅延評価を使用することができます。

<img src="<%= "#{root_path}#{SiteConfiguration.gallery_path}#{@gallery.image}" %>" alt="" /> 

が、ことを確認した方がよい、なぜ正確にフィールドの一つがnilなり?また、ヘルパーやデコレータにコードを移動します。

設定をカスタマイズ可能にするにはconfig gemを使用してください。だからここにあなたが代わりにSiteConfigurationSettings定数を使用する必要が

--- 
site_name: 'Site Name Here' 
banner_path: 'uploads/banners/' 
avatar_path: 'uploads/avatar/' 
gallery_path: 'uploads/gallery/' 
category_path: 'uploads/category/' 

<img src="<%= "#{root_path}#{Settings.gallery_path}#{@gallery.image}" %>" alt="" /> 
+0

画像パスに 'SiteConfiguration.gallery_path'がありません。 「Dsc 0380」 – Chinmay235

+0

を確認してください。画像のパスは「Dsc 0380」 – Chinmay235

+0

にする必要があります。私のビュー(erb)ファイルに 'settings.yml'' gallery_path'をどのように表示するのか教えてください。 – Chinmay235

関連する問題