在我的一个轨道控制器中,我必须响应几种格式,所以我使用典型的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增加)
响应还允许您通过使用以下命令为不同的格式指定一个公共块:
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