在RoR 2.x中使用react_to与ajax进行正常降级
时间:2020-03-06 14:53:10 来源:igfitidea点击:
我正在阅读有关Web开发的AWDR书,其中包括ruby on rails和旧代码的问题之一是它不使用response_to来确保使用的视图是javascript视图。现在,在一些更新的示例中,我看到人们以后会提到它们,当实现正常降级时,请使用request.xhr?告诉用户是否启用了javascript,如果没有,则他们将用户重定向。
我想知道我们是否可以使用response_to来获得相同的行为,如果可以,是否认为这是一种好的形式,为什么?
所以我想做的是这样的:
def function respond_to do |format| format.js do basic_stuff end format.html do basic_stuff user_redirect end end end
它似乎确实违反了DRY原理,并且我可能在这里缺少有关用户和服务器交互方式的信息。老实说,API文档对我来说并不十分清楚。
解决方案
好吧,我们可以像这样重构:
def function basic_stuff # executed regardless of the mime types accepted respond_to do |format| format.html do user_redirect end end # will fall back rendering the default view - which you should ensure will be js end
" request.xhr"查看请求的" X-Requested-With"头(以查看其是否包含" XMLHttpRequest")。 respond_to
查看接受的mime类型。
我们可以使用任何一种来实现某种优雅的降级。
但是,除非ajax调用设置了该标头,否则我们将无法使用xhr?
进行优雅降级(Prototype会自动执行此操作)。
此外,respond_to
提供了更大的灵活性,即发送xml,json,js,无论它来自同一块是什么。
所以我建议在这里respond_to
。