什么是将不同的HTML返回给AJAX的最Rails-y方式?

时间:2010-12-29 18:42:27

标签: ruby-on-rails-3 content-type

我的网站上有一个搜索框,通常可以通过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

1 个答案:

答案 0 :(得分:2)

我相信你可以直接询问请求本身是否是ajaxy并做出相应的回应(尽管我自己从未实际做过这个):

if request.xhr?

  ...