我的网站上有一个搜索框,通常可以通过AJAX运行。返回的结果只有很少的标记,并放入现有的div中。
但是,人们可能会通过常规页面请求进行搜索。例如,在Google Chrome的地址栏中,键入stackoverflow.com
并点击标签。 Google已检测到SO有一个搜索框,Chrome现在会将其用于搜索。
我们的网站也会发生同样的事情。在这种情况下,我想回复一个完整的HTML页面,而不是一个片段。
我知道Rails控制器可以使用respond_to
,但据我所知,这意味着“用户要求的内容类型是什么 - html?xml?json?”在这种情况下,两个请求都需要HTML,只需要不同的数量。
是否有规范的Rails方法来区分具有相同内容类型的响应?如果没有,是否有人可以建议一个好的模式?
这就是我现在在我的帮助控制器的search
方法中所做的,其默认值为layout false
。 (我没有改变它,因为它对控制器上的其他方法是正确的。)
# All non-AJAX searches should get a layout
unless request.xhr?
render :search, :layout => 'search'
end
答案 0 :(得分:2)
我相信你可以直接询问请求本身是否是ajaxy并做出相应的回应(尽管我自己从未实际做过这个):
if request.xhr?
...