ruby-on-rails – rails – DRY respond_to重复操作

在我的一个轨道控制器中,我必须响应几种格式,所以我使用典型的respond_to链:
respond_to do |format|
  format.html   { ... }
  format.mobile { ... }
  format.jpg  { ... }
  format.xml  { ... }
  format.js   { ... }
end

通常,{…}部分是以多种格式重复的.在这种情况下,最好的方法是保持干燥?在html,mobile和xml有一个“重复”动作的情况下,我想做这样的事情:

respond_to do |format|
  format[:html,:mobile,:xml] { ... }
  format.jpg  { ... }
  format.js   { ... }
end

非常感谢.

解决方法

你有没有尝试过format.any(:html,:mobile,xml)?

示例(2011/9/14增加)

rails doc

响应还允许您通过使用以下命令为不同的格式指定一个公共块:

def index
  @people = Person.all

  respond_to do |format|
    format.html
    format.any(:xml,:json) { render request.format.to_sym => @people }
  end
end

在上面的例子中,如果格式为xml,它将呈现:

render :xml => @people

或者如果格式是json:

render :json => @people

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...