2010-05-03 39 views

Trả lời

8

Giả sử bạn đang làm điều này:

class UsersController < ApplicationController 

     def create 
     # 
     #your code 
     # 

     respond_to do |format| 
      format.xml {render :xml => xxx} 
      format.json {render :json => xxx} 
      format.html {render xxx} 
     end 
     end 

     def edit 
     # 
     #your code 
     # 

     respond_to do |format| 
      format.xml {render :xml => xxx} 
      format.json {render :json => xxx} 
      format.html {render xxx} 
     end 
     end 

    end 

thay vì làm:

class UsersController < ApplicationController 

     respond_to :xml, :json, :html 

     def create 
     # 
     #your code 
     # 

     respond_with xxx 

     end 

     def edit 
     # 
     #your code 
     # 

     respond_with xxx 

     end 

    end 

và thats làm thế nào bạn giữ DRY mã (Dont Repeat Yourself)

+1

nhưng hầu hết thời gian, có là những hành động khác. nếu bạn không muốn họ trả lời các định dạng khác thì sao? Đơn giản chỉ cần không có những tập tin trong ứng dụng? (ví dụ: đối với hành động 'mới', không bao gồm new.json hoặc new.xml)? Có bất kỳ lỗ hổng hoặc thực tiễn xấu nào khi thực hiện theo cách này không? Miễn là không có tập tin để gọi, tôi đoán không nên có vấn đề, phải không? – ahnbizcad

+2

@gwho: Bạn được tự do giới hạn lệnh gọi 'respond_to' thành hành động chỉ cần sử dụng tham số': only'. Ví dụ: 'respond_to: json,: xml, only: [: new,: create]' hoạt động. - HOẶC - nếu bạn không muốn sử dụng ': only', thì chỉ cần không viết respond_with. Sử dụng 'render' – Devaroop

+1

Ah Tahnk bạn. Điều này có vẻ giống như một trường hợp sử dụng thường xuyên, rất tự nhiên. Thật ngạc nhiên khi có bao nhiêu blog/tài nguyên có xu hướng bỏ qua nó, chỉ cho các trường hợp đơn giản nhất. – ahnbizcad

Các vấn đề liên quan