7

一部のコントローラーで before_filter を作成して、キーワード検索を親コントローラーにリダイレクトしました

とても簡単です:

  before_filter :redirect_search
  def redirect_search
    redirect_to controller: "buildings", action: "index", format: "html" if params[:q].present?
  end

keyword_search は「js」形式で送信されることに注意してください

すべてがうまくいくようです。サーバーを見ると、建物/インデックスが実行され、ページがレンダリングされていることがわかりますが、ブラウザーでは何も起こりません。

ブラウザのコンソールにこれが表示されます

GET http://localhost:3000/buildings.html 200 OK

応答本文にhtmlページがあります

これは、Buildings/Index が html として実行された後、js としてブラウザーに送信されることを意味します。

どうしてこんなことに?どうすれば修正できますか?

4

3 に答える 3

17

試してみてください

def redirect_search
     respond_to do |format|
            format.html {redirect_to buildings_path} if params[:q].present?
            format.js {render :js => "window.location.href='"+buildings_path+"'"} if params[:q].present?
     end
end
于 2013-09-05T07:17:54.043 に答える
12

Bachanの答えのおかげで、私はこの方法で問題を解決できました:

  def redirect_search
    render :js => "window.location.href='"+buildings_path+"'" if params[:q].present?
  end

ありがとう!

于 2013-09-08T08:19:20.890 に答える
1

問題は、リクエストを実行しているビューにあると思います

JS リクエスト (ajax) を送信しているので、js.erb ファイルを返し、js を使用して新しい HTML をレンダリングする必要があります。

于 2013-09-05T07:13:18.670 に答える