respond_to做什么?

时间:2013-03-30 20:27:15

标签: ruby-on-rails

#some instance variables
respond_to do |format|
  format.html
  format.xml {...}
  format.json {...}
end

respond_to只是将所有实例变量发送到下一个网页,还是会做更多的事情?

我想知道respond_to会发送多少数据。例如,如果我有许多实例变量@one @two @three等它们都是由respond_to发送的吗?还会捆绑和发送任何其他数据吗? ?

2 个答案:

答案 0 :(得分:0)

如果没有您的指示,您的实例变量将不会被发送到任何地方。

您可能有一个.html.erb模板,可在收到HTML请求时呈现实例变量(format.html)。

对于xml和json响应,您需要告诉Rails要做什么。例如,您可以提供模板.xml.builder。 Rails还可以自动为您呈现某些结构(数组等),只需调用render json: @one

即可

答案 1 :(得分:0)

Rails会查看已注册的格式并尝试查找兼容的格式,否则会引发错误。

示例:

export class exampleClass {
    hello(){
        console.log("A");
    }
}

def index @stories = Story.all end 操作没有index阻止。如果客户端要求以TEXT格式获取页面,则会导致以下异常:

respond_to

我们可以通过添加ActionView::MissingTemplate (Missing template blogs/index ... with { ... :formats=>[:text], ...})块来轻松解决此问题:

respond_to

更改后,如果不支持该格式,客户端将获得def index @stories = Story.all respond_to do |format| format.html format.js end end 。此外,您的索引操作将响应两种新格式:j​​s和HTML。

本文介绍了您可以使用respond_to blocks的所有方法。