1

Boxy.jsを使用して、/signupページをモーダルウィンドウに呼び出しています。Ajaxだと思います。このように呼び出されているときに、ページがレイアウトでレンダリングされないようにします。

私は試した:

layout proc {|controller| controller.request.xhr? ? false: "application" }

と:

def render(*args)
    args.first[:layout] = false if request.xhr? and args.first[:layout].nil?
    super
  end

アプリケーションコントローラーで、グーグルで検索したスニペットですが、機能しません。/signupはまだレイアウトを考えています。

/ signupがBoxyによって呼び出されたときのヘッダーの一部は、次のとおりです。

リクエストURL:http:// localhost:3000 / signup?_ = 1301708866195

リクエスト方法:GET

X-Requested-With:XMLHttpRequest

4

1 に答える 1

1

ベストプラクティスは、次のようにRailsのjs応答を使用することです。

respond_to do |format|
  format.html
  format.js { render :action_name, :layout => false }
end

ただし、jQueryはデフォルトで適切なXHRヘッダーを送信しないため、application.jsに次のようなものを追加する必要があります。

$.ajaxSetup({
  headers : {
    'Accept' : 'text/javascript',
    'X-Requested-With' : 'XMLHttpRequest'
  }
});

すばやく汚いものを使用したい場合は、次のことを試してください。

respond_to do |format|
  format.html { render :layout => false if request.xhr? }
end
于 2011-05-31T20:53:00.080 に答える