Проблема маршрутизации Rails - PullRequest
1 голос
/ 03 ноября 2010

В приложении rails у меня есть специальный URL (/ profile), который я сопоставляю с пользовательским контроллером, чтобы пользователь мог просматривать и редактировать свой профиль.Я сделал следующие записи в моем файле маршрута, чтобы «get» для профиля направил меня к действию профиля в пользовательском контроллере, а «post» для профиля направит к действию update_profile в пользовательском контроллере.

match '/profile', :to => 'users#profile', :via => "get"
match '/profile', :to => 'users#update_profile', :via => "post"

Если я запускаю рейк-маршруты, я вижу следующие две записи

profile GET   /profile(.:format)  {:controller=>"users", ":action=>"profile"}
profile POST  /profile(.:format)  {:controller=>"users", ":action=>"update_profile"}

Если я пытаюсь нажать на URL-адрес устройства http://localhost:3000/profile, открывается страница профиля, как и ожидалось.Если я нажимаю кнопку формы, появляется следующая ошибка:

Routing Error

No route matches "/profile"

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

<form accept-charset="UTF-8" action="/profile" class="edit_user" enctype="multipart/form-data" id="edit_user_1" method="post">

Так чего мне не хватает?Посмотрев на вывод о рейк-маршрутах, я предположил, что это будет работать как есть.Я неправильно думаю о своих глаголах http?Любая помощь будет оценена.

1 Ответ

0 голосов
/ 04 ноября 2010

Я вижу здесь несколько проблем.

Во-первых, это действия для конкретного пользователя. Таким образом, маршрут, вероятно, должен быть 'profile/:id'

Во-вторых, show и update генерируются автоматически при создании ресурса. В чем преимущество переименования действий и сопоставления их с пользовательскими URL-адресами? Нарушение автоматически генерируемых маршрутов Rails RESTful часто вызывает проблемы. Это можно сделать, но у вас должна быть веская причина для этого.

В-третьих, твои маршруты выглядят смешно для меня. Есть некоторые цитаты, где они не должны быть. Это то, как они появляются в вашей консоли, когда вы запускаете грабли?

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