Rails 3 - Понимание отношения Контроллер / Маршруты - PullRequest
0 голосов
/ 11 октября 2010

, что позволяет загружать URL-адреса, такие как

  • / photos
  • / photos / 2
  • / photos / 2 / edit

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

  • / photos / 2/ updatesettings

Поэтому в контроллере фотографий я добавил "def updatesettings ...."

А в маршрутах я добавил:

resources :photos do
 collection do
    get 'updatesettings'
 end
end

Но яполучаю сообщение об ошибке: «Ошибка маршрутизации Не найдено ни одного маршрута»

Предложения?спасибо

Ответы [ 2 ]

1 голос
/ 11 октября 2010

То, что у вас есть в файле маршрутов, будет соответствовать URL '/ photos / updatesettings'

Единственный способ, которым я знаю, как делать то, что вы хотите сделать, это:

match "photos/:id/updatesettings" => "photos#updatesettings"

Во второй части этой строки photos говорят ему о том, что он должен смотреть в контроллере photos, а #updatesettings сообщает ему о методе вызова.

Вы бы поставили это вне ресурсов: фотографий, чтобы ваш код был

resources :photos
match "photos/:id/updatesettings" => "photos#updatesettings"
1 голос
/ 11 октября 2010

Есть большая вероятность, что вы используете форму для обновления этих настроек, я прав? *

В этом случае вы хотите сделать post 'updatesettings' в файле маршрутов, а не get.Это определит маршрут, который отвечает на POST запросов, а не тот, который отвечает только на GET запросов.Если вы хотите и то, и другое, то используйте строку get и post в файле маршрутов.

* В большинстве случаев да, я.

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