5

本文に次のようなものが含まれている場合、メーラーの1つが起動すると、次のlink_to root_url信じられないほど役に立たないエラーが発生します。

ActionView::Template::Error: No route matches {}

トレースは役に立たないか、そのlink_toメソッドを指しています。ここでも非常に検索できないため、スタックオーバーフローについて質問しています。

更新 1:役立つように、恐ろしいroutes.rbファイルを投稿しました: https://gist.github.com/2955610

更新 2:コンソールでapp.root_url、正しいリターンを提供します。

更新 3: link_to "whatever", root_url正常に動作します。とても奇妙!

更新 4:通常の Rails ビューでは問題なく動作します。

更新 5: 修正済み現在image_tag、メールでホストが提供されていません。出力: http://assets/...png. フフフ。

更新 6: (in console) で同じエラーが発生するように絞り込みましたapp.url_for。関係している可能性もあると思います。

4

2 に答える 2

6

したがって、本当の答えはlink_to、ActionMailer と ActionController では動作が異なるということです。違いは、どうやら ActionController には というオプションが:script_nameあり、これによりあらゆる種類の仮定が行われることです。

私はその違いに同意しませんが、それについてできることはあまりないので、私が最終的にやったことは次のとおりです。

link_to root_url, root_url

では、なぜ両方を使用するのでしょうか。2つの理由:

  1. アンカー テキストと href として URL が必要でした。
  2. URL が変更された場合、これらすべての文字列を更新する必要はありません。
于 2012-06-20T17:35:57.907 に答える
0

メーラーの問題は、おそらく「ホスト」オプションを見逃していることですか? :)

于 2012-06-19T21:22:26.920 に答える