3

基本的に、link_toを使用してコントローラーのインデックスメソッドにリンクしたいと思います。私は試した:

<%= link_to 'Recipes', Recipe %> 

しかし、それは出力します:

<a href="/recipes/Recipe">Recipes</a>

これは明らかに正しくありません。最後のビットを省略した場合、私が望んでいたことを正確に実行します。RESTfulなものを使えば、どういうわけかアクションなどを省略し始めると思いました。私は何を誤解していますか?

4

1 に答える 1

6

残りのルートでは、ほとんどの場合、ヘルパーメソッドを呼び出してルートを生成することが期待されます。

例えば:

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など、壊れたリンクを提供します。

于 2008-10-08T05:25:40.617 に答える