2

render について少し混乱しています。リンクするためにどのパスを選択するのかよくわかりません。

ドキュメントによると: http://guides.rubyonrails.org/layouts_and_rendering.html#using-render

明示的なリンクを設定できます:

render "/u/apps/warehouse_app/current/app/views/products/show"

しかし、/apps/view/layouts/application.html.erb で _header と _footer のシムがある場合は、次のようにする必要があります。

render 'layout/header'

そのため、../app/view/ から始まるパスを探し、layout/_header.html.erb を追加してファイルをフェッチします。しかし、rubyonrails.org にリストされている明示的なリンクを使用するルールでは、先頭に / が示され、ルート フォルダー (/u/apps/...) から始まるパスがあります。

だから私の質問は、開始ディレクターである主要な / で render を使用するときですか? それは常にルートであり、レイアウトはルールの例外にすぎませんか?

ありがとう

4

3 に答える 3

2
render '/layout/header'

ただあるべき

render 'layout/header'
于 2012-06-27T07:43:04.500 に答える
1

あなたはこの点を見逃していると思います。render メソッドは、完全にアプリケーションの外部にあるビューを使用することもできます (おそらく、2 つの Rails アプリケーション間でビューを共有しています)。

render "/u/apps/warehouse_app/current/app/views/products/show"

Rails は、先頭のスラッシュ文字により、これがファイル レンダーであると判断します。

一般に、別のコントローラからビュー ファイルを追加する場合は、次のようになります。

render "prodcucts/show"

ビューフォルダーまでのパスが自動的に取得されます。レイアウトについては、上記と同じことができます

render "layouts/header"
于 2012-06-27T07:49:22.230 に答える
1

render正しいパスに関する混乱は、最初のオプションを使用してレイアウト ファイルを指すという事実が原因だと思います。これは、レイアウトが使用されることになっている方法ではありません。

代わりに、次のように使用します。

render 'users/show', layout: 'mylayout'

ただし、あなたの場合、本当に使いたいのはパーシャルのようです。

次のようなものが機能します。

render 'shared/header'

という名前のファイルで_header.html.erb

ドキュメントからの 2 つの重要な注意事項:

アプリケーション内のすべてのページで共有されるコンテンツの場合、レイアウトから直接パーシャルを使用できます。

と:

ビューがレイアウトを使用できるように、パーシャルは独自のレイアウト ファイルを使用できます。たとえば、次のようにパーシャルを呼び出すことができます。

<%= render :partial => "link_area", :layout => "graybar" %>
于 2012-06-27T07:50:20.343 に答える