在我的一个轨道控制器中,我必须响应几种格式,所以我使用典型的respond_to链:
respond_to do |format| format.html { ... } format.mobile { ... } format.jpg { ... } format.xml { ... } format.js { ... } end@H_404_3@通常,{…}部分是以多种格式重复的.在这种情况下,最好的方法是保持干燥?在html,mobile和xml有一个“重复”动作的情况下,我想做这样的事情:@H_502_5@
respond_to do |format| format[:html,:mobile,:xml] { ... } format.jpg { ... } format.js { ... } end@H_404_3@非常感谢.@H_502_5@
解决方法
你有没有尝试过format.any(:html,:mobile,xml)?
响应还允许您通过使用以下命令为不同的格式指定一个公共块:@H_502_5@
def index @people = Person.all respond_to do |format| format.html format.any(:xml,:json) { render request.format.to_sym => @people } end end@H_404_3@在上面的例子中,如果格式为xml,它将呈现:@H_502_5@
render :xml => @people@H_404_3@或者如果格式是json:@H_502_5@
render :json => @people@H_404_3@