我正在阅读关于rubyonRails的web开发的AWDR书籍,而旧代码的一个问题是它没有使用响应。respond_to以确保所使用的视图是javascript视图。现在,在一些更新的示例中,我看到人们稍后提到它们,在实现优雅降级时,使用request.xhr?判断用户是否启用了javascript,如果没有,则重新定向用户。
我想知道你是否需要respond_to去做同样的事,如果是的话,如果这被认为是好的形式,为什么?
所以我想做的是:
def function
respond_to do |format|
format.js do
basic_stuff
end
format.html do
basic_stuff
user_redirect
end
end
end
这似乎违反了干法原则,我可能忽略了用户和服务器在这里的交互方式。老实说,API文档并没有对我说得很清楚。
发布于 2017-12-27 14:26:50
你可以这样重构:
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类型。
您可以使用这两种方法来实现某种优美的度。
但你不能用xhr?
对于优雅的程度,除非Ajax调用设置了标头(Prototype会自动这样做)。
此外,respond_to
提供了更多的灵活性,即从同一个块发送XML、json、js,无论是什么。
所以我建议respond_to
这儿
https://stackoverflow.com/questions/-100000041
复制相似问题