Настройка маршрутизации Rails
-
28-10-2019 - |
Вопрос
Я застрял на проблеме маршрутизации в приложении Rails 3.0.x.
Чего я пытаюсь достичь, это URL /Регистрация/обновление/1 Анкет Идея состоит в том, что это возобновит регистрацию для участника с ID = 1.
Итак, я настраиваю следующие маршруты
Routes.rb
match "registration/renew" => "registration#renew"
Пользователь прибывает на страницу регистрации по навигационной ссылке, такой как
<%= link_to "Full Member", registration_renew_path(@member) %>
Проблема в том, что сгенерированная ссылка выходит как: /registration/renew.1 что указывает на то, что расширение формата создается и добавляется. Который затем я попытался сделать необязательным с помощью включения Аргумент респондента: формат Согласно следующему правилу сопоставления
match "registration/renew(/:id(.:format))" => "registration#new"
Но это терпит неудачу с
No route matches {:controller=>"registration", :action=>"renew", :format=>#<Member id: 1,.....
Так что в этот момент я перепроверил направляющие рельсов и т. Д., Но все еще не мог генерировать URL, которого я был после.
Только когда у меня были два правила:
match "registration/renew" => "registration#renew"
match "registration(/:action(/:id(.:format)))" => "registration#renew"
В файле маршрутов будет URL /Регистрация/обновление/1 Получите меня на страницу. Хотя я не чувствовал, что это было правильное, аккуратное решение.
Последний вопрос (ы)
- Что должно быть ссылка на метод
- Какие правильные маршруты.
Заранее спасибо
Решение
Вам просто нужно явно пройти ARGS и определить название этого маршрута
match "registration(/:action(/:id(.:format)))" => "registration#renew", :as => registration_renew
Только с удостоверением личности
<%= link_to "Full Member", registration_renew_path(:id => @member.id) %>
С идентификатором и форматом
<%= link_to "Full Member", registration_renew_path(:id => @member.id, :format => :xml) %>
Без идентификатора
<%= link_to "Full Member", registration_renew_path %>
Вам не нужен маршрут без параметров в вашем примере.
Другие советы
Вы можете упомянуть контроллер и действие в методе link_to
<%=link_to "Full Member", :controller => "registration", :action => "renew", :id => @member.id %>
Пожалуйста, обратитесь к следующему уроку для получения дополнительных вариантов.
http://api.rubyonrails.org/classes/actionview/helpers/urlhelper.html#method-i-link_to