Question

Je suis bloqué sur un problème de routage au sein de l'application d'un Rails.

Ce que je suis en train de réaliser est une URL comme / enregistrement / renouvellement / 1 . L'idée est que cela renouvellement de l'inscription d'un membre avec id = 1.

Donc, pour cette configuration fin I les routes suivantes

routes.rb

match "registration/renew" => "registration#renew"

L'utilisateur arrive à la page d'inscription via un lien de navigation tels que

<%= link_to "Full Member", registration_renew_path(@member)  %>

Le problème est que le lien généré sort comme: /registration/renew.1 qui indique que: l'extension de format est en cours de création et en annexe. Ce qui j'ai essayé de faire en option via l'inclusion d'un l'argument répondeur: format selon la règle de correspondance suivante

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

mais échoue avec

No route matches {:controller=>"registration", :action=>"renew", :format=>#<Member id: 1,.....

Donc, à ce stade, je revérifié les rails guides, etc, mais ne pouvait toujours pas arriver à générer l'URL que je recherchais.

Seulement quand j'avais les deux règles:

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

dans le fichier routes serait l'URL / enregistrement / renouvellement / 1 me rendre à la page. Bien que je ne me sentais pas que c'était la bonne solution, bien rangé.

La dernière question (s)

  1. Quelle devrait être la méthode link_to
  2. Quelle est l'entrée correcte routes.rb

Merci à l'avance

Était-ce utile?

La solution

Il vous suffit passer args explicitement et définir le nom de cet itinéraire

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

id seulement

<%= link_to "Full Member", registration_renew_path(:id => @member.id)  %>

Avec id et le format

<%= link_to "Full Member", registration_renew_path(:id => @member.id, :format => :xml)  %>

Sans id

<%= link_to "Full Member", registration_renew_path  %>

Vous n'avez pas besoin de la route sans params dans votre exemple.

Autres conseils

Vous pouvez mentionner le contrôleur et l'action dans la méthode link_to

<%=link_to "Full Member", :controller => "registration", :action => "renew", :id => @member.id %> 

S'il vous plaît se référer le tutoriel suivant pour plus d'options.

http://api.rubyonrails.org/ cours / ActionView / Helpers / UrlHelper.html # méthode i-link_to

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top