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 页面

这意味着建筑物/索引作为 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 回答