Rails Routing Setup - PullRequest
       13

Rails Routing Setup

0 голосов
/ 20 февраля 2012

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

Я пытаюсь создать URL-адрес типа / registration / renew / 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,.....

Итак, в этот момент я перепроверил Rails Guides и т. Д., Но все еще не смог сгенерировать URL, который я нашел.

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

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

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

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

  1. Каким должен быть link_to метод
  2. Какая корректная запись в файле rout.rb

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

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

Вы можете упомянуть контроллер и действие в методе 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

1 голос
/ 20 февраля 2012

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

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

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

...