2012-02-20 2 views
0

Я столкнулся с проблемой маршрутизации в приложении Rails 3.0.x.Настройка маршрутизации Rails

То, что я пытаюсь достичь, - это URL как /registration/renew/1. Идея заключается в том, что это продлит регистрацию для члена с идентификатором = 1.

Так к этой установке конец I следующие маршруты

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,.....

Таким образом, в этой точке I перепроверил Rails Guides и т. д., но до сих пор не смог получить URL-адрес, который я получил.

Только тогда, когда у меня были два правила:

match "registration/renew" => "registration#renew" 
match "registration(/:action(/:id(.:format)))" => "registration#renew" 

в файле маршрутов бы URL /регистрация/обновить/1 получить меня на странице. Хотя я не чувствовал, что это было правильное, аккуратное решение.

Последний вопрос (ы)

  1. Что должно быть link_to метод
  2. Что такое правильную запись routes.rb

Заранее спасибо

ответ

1

Вы просто необходимо передать аргументы явно и определить имя этого маршрута

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 %> 

Вам не нужно маршрут без Params в вашем примере.

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