2014-11-04 2 views
0

Очень общий вопрос. Я надеялся, что кто-то сможет прояснить меня. Я рассматриваю базовый код проекта для модели под названием продукты. Я заметил, что новые и шоу-действия в контроллере в них мало написаны. Фактически, шоу полностью пустое и новое имеет только строку «@product = Product.new». Я знаю, что эти 2 действия должны идти в отдельное представление. Представление ресурса и новое представление формы для ввода информации и создания ресурса, соответственно.Rails - Как работает шоу и новое действие

Итак, мне любопытно, как это происходит на самом деле. Другие действия имеют redirect_to: some_path, что имеет смысл, но как именно «render action 'show', location: @product» выводит страницы с результатами, когда действие пуст? И как это отличается от redirect_to @product?

благодаря

Будет

ответ

0

Рендер производит строку, которая будет отображаться в качестве ответа на запрос к приложению.

redirect_to создает заголовок ответа, в результате чего появляется новый запрос к приложению.

render action 'show', location: @product использует файл app/views/products/show.html.erb с номером @product как параметр для получения html, который будет возвращен.

Причина, по которой некоторые из функций контроллера пустые, заключается в том, что рельсы используют значения по умолчанию. Поэтому, если вы не скажете рельсы, что визуализировать, тогда рельсы будут искать файл в соответствующем месте.

Методы, заканчивающиеся на redirect_to, обычно - это сообщения об отправке/исправлении, сохраняющие что-то в вашей базе данных, и после того, как запрошенное действие было выполнено, они перенаправляют пользователя на метод, предназначенный для отображения информации.

+0

А я вижу. Одна последняя вещь. Я знаю, что reply_to do | format | решает, в каком формате запрашивается запрос, и я понимаю что-то вроде «format.html {redirect_to @product, notice:« Продукт был успешно обновлен ». } «но как насчет« format.json {head: no_content} «Не хотите ли вы, чтобы эти два варианта сделали одно и то же? – Will

+0

Не обязательно. Обычно запросы json (по моему опыту) выполняются через ajax из javascript. передняя часть, как правило, довольно умна и может решить, что делать для себя. Я бы, вероятно, отправил «Все хорошо». Если вы заставите их делать то же самое, ваше действие шоу должно будет обрабатывать запросы json как Что ж. – Albin

Смежные вопросы