2012-03-28 16 views
6

私はレール3.1.3から3.2.2にアップグレードしていますが、何らかの理由でurl_forはルートが存在しなければ常に/ assetsを返します。例えば未定義のルートに対して/ assetsを返すurl_forはなぜですか?

url_for({}) #=> "/assets" 
url_for({action: 'fake', controller: 'notreal'}) #=> /assets?action=fake&controller=notreal 

しかし、私はそれはそれは通常どおり通常ActionController :: RoutingErrorをスローするようにしたい...

+0

奇妙なもの。すべてのenv設定を確認してください。あなたは 'url_for'を再定義しましたか? 'rake rails:update'を実行しましたか? – Austin

+0

これを解決しましたか?私はここで同じ問題を抱えている。最も単純なシナリオの場合、すなわち。リソースがなく、DemoControllerを作成し、インデックスアクションからredirect_to:action => 'show'を使用しました。このタイプのURLを生成します:/ assets?action = show&controller = demo 私はこれがショーテンプレートをレンダリングすると思います。あなたは何が起こっているのか調べましたか? – jlstr

+0

@ user766388まだ謎です:/ – bkempner

答えて

0

私はあなたが事前にコンパイル上および以来の資産を持っていると思います画像がassetsフォルダに存在しない場合、コンパイルファイル名はnullですが、パスはassetsフォルダのルートを指しています。また、ログにあらかじめコンパイルされたアセットを見つけられないというエラーが表示されますか?

これを超えるためには、開発環境でアセットの事前コンパイルを行わずに実行してみてください。資産のプリコンパイルの詳細を再ハッシュしません。アセットパイプラインの詳細についてはhttp://guides.rubyonrails.org/asset_pipeline.htmlを確認してください。プロダクション環境でのみこの問題が発生している場合は、ホストプラットフォームがアセットをあらかじめコンパイルしている可能性があります。

ただし、本番環境でこれが起こることが予想される場合は、プリコンパイルを無効にする代わりにイメージが存在するかどうかを確認することができます。

1

コントローラの動作を指定して経路を構築すると、経路の存在が確認されません。そして当然、{}経路の/ assetsを表示します。

routes.rbで名前付きルートを指定し、url_forに使用する方がよいでしょう。以下のような:これは(ルートという名前の存在のために)成功するか、エラーを取得するかを保証add_user_path

なurl_for

HTH

関連する問題