2

レイアウトをfalseに設定したコントローラーがあります。

class SplashController < ApplicationController
  layout false
  def index
  end
end

しかし、このページをロードするとき、cssはまったくありません-これはレールの処理方法に関係していると思いますlayout false-しかし、レールに関する私の現在の知識は私を失ってしまいます。

レイアウトをレンダリングせずに、レイアウトをロードする場合に通常ロードされる他のすべてのアセット(css、jsなど)をロードするにはどうすればよいですか?(*レイアウトファイルには、これらのアセットへの特定の参照がないことに注意してください)

4

1 に答える 1

2

デフォルトでは、この:textオプションを使用すると、テキストは現在のレイアウトを使用せずにレンダリングされます。Rails にテキストを現在のレイアウトに配置させたい場合は、:layout => true オプションを追加する必要があります。

表示する情報だけが必要なので、:textレンダリングに使用することをお勧めします。

:text オプションを使用してレンダリングすることにより、マークアップをまったく使用せずにプレーン テキストをブラウザーに送信できます。

render :text => "OK"

注: 純粋なテキストのレンダリングは、適切な HTML 以外のものを期待する AJAX または Web サービス要求に応答する場合に最も役立ちます。

アップデート:

また、アセットを表示する必要があるがレイアウトを false にする必要がある場合は、アセットを使用可能にした後でレイアウトを false にレンダリングする必要があります。これは、いくつかのビューを作成し、そこに必要な css および js ファイルを定義し、コントローラーからそのビューを呼び出してから、レイアウトを false に設定することを意味します。

ビューの後にレイアウトを false に設定すると、css と js が表示されますが、レイアウトは false のままです。

ただし、css と js を含むビューを表示する前にレイアウトを false に設定すると、アセットはまったく含まれません。

上記の他の代替手段も機能します。

css : <%= eval("render :partial => 'myurl/blah', :formats=> [:css], :layout => false").dump.html_safe %>

:cssレイアウトが falseのときに、アセットを含む部分的なビューがどのように呼び出されるかがわかります。

于 2013-02-13T13:26:40.343 に答える