13

私は周りを検索しましたが、このタイプのメカニックの解決策を見つけることができませんでした. Rails で通常どおりすべてのページをロードしたいのですが、ajax リクエストを行うたびに、レイアウトなしでページを返したいだけです。そのため、ajax リクエストを行うたびに、?page=trueこれらの行に a または何かを追加して、Rails にレイアウトなしでページを返すようにさせることができます。

これは可能ですか?私が行方不明になっていることを行うためのより良い方法はありますか?

助けてくれてありがとう!

最終的なソリューションの作業コード:

コントローラーで行う必要があるのformat.htmlは、respond_toブロック内の に小さなロジックを追加することだけです。

showたとえば、メソッドでは

def show
    # code beforehand

    respond_to do |format|
        format.html { render :layout => !request.xhr? }
        # other formats
    end
end

以上です!AJAX リクエスト中のレイアウトを防止してください!

注:彼の回答に対するスマシーのコメントのおかげで、これはさらに単純化されました。私はもともとformat.html { render :layout => nil if request.xhr? } このソリューションも同様に機能しますが、smathy の変更によりさらにシンプルになります。

4

1 に答える 1

9

そのパラメーターを追加する必要はありませんrequest.xhr?。Ajax リクエストの場合、コントローラーで true を返します。それを使用して、レイアウトをレンダリングするかどうかを決定します。

于 2012-07-02T01:40:04.500 に答える