残りのルートでは、ほとんどの場合、ヘルパーメソッドを呼び出してルートを生成することが期待されます。
例えば:
link_to 'Recipes', recipes_path
レシピオブジェクトを渡すことができる最適化があり、それは舞台裏であなたのためにヘルパーメソッドを呼び出します:例:
link_to 'Recipe X', @recipe
と同じです
link_to 'Recipe X', recipe_path(@recipe)
ただし、これは特殊なケースです。
あなたがしているのは、有効なレシピオブジェクトではなく、レシピクラス自体を渡すことです。railsはこれを処理することを知らないため、フォールバックとして、.to_s
指定したものをすべて呼び出し、それをに渡しrecipe_path
ます。これが、奇妙なURLが表示される理由です。
ヒント:_path
メソッドではなく、ヘルパーメソッドを使用してください_url
。
_url
のような完全なURLをhttp://stackoverflow.com/recipes/5
提供し_path
ますが、 /recipes/5
。
完全なURLの問題は、本番環境でRailsアプリがロードバランサーの後ろに座っている雑種として実行されていることが多いため、ホスト名が実際の1.2.3.4
(または内部LAN IPが何であれ)実際の名前ではないと見なされることです。 URLなど、壊れたリンクを提供します。