ahn*_*cad 9 ajax ruby-on-rails respond-to
什么时候有
def some_action
respond_to do |format|
format.html {}
format.js {}
format.json { respond_with @objects}
end
end
Run Code Online (Sandbox Code Playgroud)
看起来像html行和js行自动提供/调用匹配动作名称的文件.并且html和js提供一个或另一个,而不是两者.它是否正确?
如果你的js中有一个被调用的ajax调用,它会调用json,它会请求数据,这些需要数据来响应,对吗?我是否需要它来响应json和js,或只是一个?
如果你不回复,并省略所有类型,它默认是否响应html和js?
当我在控制器中执行respond_to而不是每个动作中的respond_to块时,是否使用respond_with @objectsapply to any argument(:thml,:js,:xml,:json等)?
替代语法:
class TheController < ApplicationController
respond_to :html, :js, :json, only: [:some_action, :other_action]
def some_action
respond_with @objects
end
end
Run Code Online (Sandbox Code Playgroud)
备用语法如何工作?
如果您使用备用语法,您是否可以对不同类型的请求做出不同的响应?如果要以不同的方式响应,是否必须执行respond_to阻止而不是替代语法?这些案例中的每一个如何解决html的优雅降级问题?
对于给定的控制器动作,respond_with基于客户端请求的mime类型生成适当的响应.
这基本上意味着您的控制器将根据请求发送相应的数据 - 例如,如果您执行了以下操作:
#app/controllers/articles_controller.rb
Class ArticlesController < ApplicationController
def show
@article = Article.find params[:id]
respond_with @article
end
end
Run Code Online (Sandbox Code Playgroud)
这基本上会响应@article每次发送请求时的数据.如果请求是jsonmime-type,它将作为JSON对象返回; 如果它是HTML请求,它将返回show视图上的HTML对象
-
基本上允许您定制对不同mime类型的特定响应.如果发送JS请求,则可以管理JS响应等
respond_to 控制器操作中的块非常麻烦,只是对响应本身的特定更改/编辑才有意义.
一种更简单的方法respond_to是将它声明在控制器文件的顶部,实质上是告诉Rails每个操作都将使用该方法中定义的选项:
#app/controllers/your_controller.rb
Class YourController < ApplicationController
respond_to :js, :json, :html #-> the same as using respond_to block for each action
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10570 次 |
| 最近记录: |