2008-09-22 28 views
7

Có ai biết tại sao không có khối respond_to cho các hoạt động edit được tạo không? Mọi hành động khác trong bộ điều khiển giàn giáo điển hình đều có khối respond_to để xuất ra các định dạng htmlxml. Tại sao hành động edit là ngoại lệ?no respond_to chặn trong hành động chỉnh sửa (được tạo bằng giàn giáo)?

Tôi đang sử dụng phiên bản mới nhất của Ruby on Rails (2.1.1).

Trả lời

12

Rails xử lý trường hợp 99%: Bạn không bao giờ cần phải thực hiện bất kỳ bản dịch XML hoặc JSON nào trong hành động Chỉnh sửa của mình, vì không trực quan, hành động Chỉnh sửa khá giống như Hiển thị hành động. khách hàng nonvisual rằng muốn cập nhật một mô hình trong ứng dụng của bạn có thể gọi bộ điều khiển theo cách này

GET /my_models/[:id].xml (Show) 

Sau đó, ứng dụng khách hàng có thể thực hiện bất kỳ biến đổi hoặc chỉnh sửa và đường bưu điện (hoặc đặt) kết quả cho

PUT /my_models/[:id].xml (Update) 

Khi bạn gọi này, bạn thường được làm việc đó để có được một hình thức có thể chỉnh sửa của hiện hành động:

GET /my_models/[:id]/edit 

Và nó được thiết kế để sử dụng con người. 99% thời gian, nghĩa là. Vì việc chuyển đổi dữ liệu trong hành động Chỉnh sửa là bất thường, Rails giả định bạn sẽ không làm như vậy và DRY tăng mã của bạn bằng cách để lại phản hồi_để ra khỏi giàn giáo.

+0

Tôi hiểu điều đó. Tuy nhiên, có một respond_to chặn cho các hành động mới. Sẽ không cùng một đối số áp dụng cho các hành động mới không? –

+1

Hành động "mới" cung cấp cho bạn một đối tượng với các trường mặc định được điền. Bạn sẽ sử dụng chúng khi bạn sau đó đăng lên hành động "tạo", cho dù từ một ứng dụng khách không phải là người dùng hoặc một màn hình HTML. – Pete

+0

Và ...... như Ryan chỉ ra trong câu trả lời của mình: Hành động mới trả về một mẫu XML mà bạn có thể sử dụng để điền vào mô hình của bạn từ một khách hàng không theo quy định. Tốt lắm, Ryan. – Pete

1

Do hành động chỉnh sửa sẽ chỉ được gọi từ HTML Không cần phải trả lại biểu mẫu chỉnh sửa trong ngữ cảnh XML. Sử dụng REST, bạn chỉ cần thực hiện cuộc gọi trực tiếp để cập nhật thông tin liên quan.

2

Hơi liên quan. Một số có thể tự hỏi tại sao giàn giáo đường ray cho hành động mới vẫn có một khối response_to; trong khi hành động chỉnh sửa thì không. Điều này là do yêu cầu đối với một cái gì đó như:

GET /my_models/new.xml 

... trả lại mẫu XML có thể được sử dụng để tạo mô hình mới.

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