Можно ли редактировать / обновлять вложенный ресурс без прохождения через родительский класс? - PullRequest
1 голос
/ 26 сентября 2011

Могу ли я обновить свой вложенный ресурс без прохождения через родительский класс?

Я помещаю это в маршруты

    put 'ratings/:id' => 'ratings#update', :as => 'update_ratings'

и помещаю исключение для [: edit,: update] в маршрут вложенного ресурса

Мой контроллер

def update/edit
 @rating = Rating.find(params[:id])
  ...
 end

Мое представление редактирования:

 <%= form_for(@rating, :url => update_ratings_path(@rating)) do |f| %>

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

Журнал:

Started PUT "/ Ratings / 21" для 127.0.0.1 2011-09-25 19:31:18 -0700 Обработка RatingsController # показать как параметры HTML: {"utf8" => "✓", "authenticity_token" => "g4TkuG1xK8W96VSKdl3ZwedrqIXmcg9CDt6y8IqaFh0 =", "rating" => {"environment" =>>8 "}," commit "=>« Обновить рейтинг »,« id »=>« 21 »} Номинальная нагрузка (0,3 мс) ВЫБРАТЬ ratings. * ОТ ratings ГДЕ ratings. id = 21 ОГРАНИЧЕНИЕ1 Отображаются рейтинги / show.html.erb в макетах / приложениях (9,8 мс). Пользовательская нагрузка (0,4 мс) SELECT users. * ОТ users ГДЕ users. id = 1 ПРЕДЕЛ 1 Завершено 200 ОК за 151 мс(Просмотры: 143,4 мс | ActiveRecord: 4,8 мс)

1 Ответ

0 голосов
/ 26 сентября 2011

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

Ваш журнал показывает «Обработка RatingsController # show», поэтому он никогда не достигает действия #update;вместо этого он входит в # show.

Наиболее вероятная причина, по которой я могу придумать, состоит в том, что у вас есть (именованный) маршрут на более высокой линии в маршрутах.> 'получить'.

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