我在我的某些控制器中创建了一个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形式发送到浏览器。
为什么会这样?我该如何解决?
答案 0 :(得分:16)
尝试
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
答案 1 :(得分:9)
感谢Bachan的回答,我可以这样解决我的问题:
def redirect_search
render :js => "window.location.href='"+buildings_path+"'" if params[:q].present?
end
谢谢!
答案 2 :(得分:1)
我认为问题出在执行请求的视图中
您正在发送JS请求(ajax),因此您应该返回一个js.erb文件并使用js呈现新的HTML