我见过一些人使用这样的代码
respond_to do |format|
format.html
format.js
end
如果我们有template.html和template.js,这样做的目的是什么?两者都可以在不指定respond_to
您的代码段没有做任何特别的事情,但是格式化选项允许您在必要时提供额外的自定义行为。
例如,如果您想将@products
呈现为JSON:
respond_to do |format|
format.html
format.js { render :json => @products }
end
这只是你可以用格式块做的许多事情之一。有关更多信息,请参见Ruby on Rails指南:布局和渲染
格式选项可以采用一个块,以便您可以进行一些自定义呈现,例如呈现文件或:head
响应。看一下这里的一些例子
如果你没有为不同的格式指定不同的行为,那么就没有理由使用respond_to
。如果你有模板,它们将被rails自动拾取。如果您需要每种格式的不同行为,respond_to
方法很有用:
respond_to do |format|
format.html { render :edit }
format.json { render :json => '{}' }
end