0

モデルの 1 つからイメージ タグを生成していますが、Rails で開発モードと運用モードの両方で同時に機能する URL を作成できません。私は自分のモデルの1つでこれを始めました:

def traffic_light_icon(size=15)
  image_tag "/assets/#{size}/#{traffic_colour}.png"
end

(私は image_tag にアクセスしていinclude ActionView::Helpers::AssetTagHelperます。)

これは開発では問題なく機能しましたが、運用環境では、アセット パイプラインから画像を取得するための適切なハッシュでリンクが自動的に更新されませんでした。フォームを使おうとすると

image_tag "#{size}/#{traffic_colour}.png"

代わりに(さまざまな情報源が示唆しているように)、開発でも機能しません-ルーティングエラーが発生します(ルートが[GET] /image/15/amber.pngに一致しません)。

私は何を間違っていますか?

4

1 に答える 1

2

基本的に、答えは、モデルにアクセスするためのハックを見つけたとしても、モデル内で image_tag を使用しないことです。適切な状況依存 URL を生成するために、ヘルパーはモデル内からは利用できないセッション データにアクセスする必要があります。これにより、Rails はイメージ タグを作成しますが、残念なことに、すべての状況 (私の場合は開発中ですが、本番環境では機能しません) で機能するわけではありません。

Railscast 132には、モデルおよびコントローラー内でいつ、どのようにヘルパーを使用するかについての良い情報があります (使用しない場合や、ヘルパーが引き起こす問題に注意する必要がある場合についてのヒントがいくつかあります)。

于 2015-04-23T13:30:37.333 に答える