нет блока response_to в действии редактирования (генерируется с помощью скаффолда)? - PullRequest
7 голосов
/ 22 сентября 2008

Кто-нибудь знает, почему нет блока respond_to для сгенерированных edit действий? Каждое другое действие в типичных контроллерах скаффолдов имеет блок respond_to для вывода форматов html и xml. Почему действие edit является исключением?

Я использую последнюю версию Ruby on Rails (2.1.1).

Ответы [ 3 ]

12 голосов
/ 22 сентября 2008

Rails обрабатывает случай 99%: маловероятно, что вам когда-либо понадобится выполнять какие-либо переводы XML или JSON в действии Edit, потому что визуально действие Edit во многом похоже на действие Show. Невизуальные клиенты, которые хотят обновить модель в вашем приложении, могут вызывать контроллер таким образом

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

Затем клиентское приложение может выполнять любые преобразования или изменения и публиковать (или помещать) результаты в

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

Когда вы вызываете это, вы обычно делаете это, чтобы получить редактируемую форму действия Show:

GET /my_models/[:id]/edit 

И он предназначен для использования человеком. 99% времени. Поскольку преобразование данных в действии Edit является необычным, Rails предполагает, что вы не собираетесь это делать, и СУШИТ ваш код, оставляя response_to вне скаффолда.

2 голосов
/ 22 сентября 2008

Отчасти связано. Некоторые могут задаться вопросом, почему леса rails для нового действия все еще имеют блок response_to; в то время как действие редактирования не делает. Это потому что запрос на что-то вроде:

GET /my_models/new.xml

... возвращает шаблон XML, который можно использовать для создания новой модели.

1 голос
/ 22 сентября 2008

Поскольку действие редактирования будет вызываться только из HTML Нет необходимости возвращать форму редактирования в контексте XML. Используя REST, вы просто звоните напрямую, чтобы обновить информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...