#some instance variables
respond_to do |format|
format.html
format.xml {...}
format.json {...}
end
respond_to只是将所有实例变量发送到下一个网页,还是会做更多的事情?
我想知道respond_to会发送多少数据。例如,如果我有许多实例变量@one @two @three等它们都是由respond_to发送的吗?还会捆绑和发送任何其他数据吗? ?
答案 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
。此外,您的索引操作将响应两种新格式:js和HTML。
本文介绍了您可以使用respond_to blocks的所有方法。