Question

Voici comment je le fais maintenant:

link_to "Profile", :controller => "profiles", :action => "asked", :id => @profile
# => <a href="/profiles/asked/1">Profile</a>

Est-il plus logique pour l'URL à <a href="/profiles/1/asked">Profile</a>? Profile 1 a demandé un certain nombre de questions, il est plus logique de moi l'URL de ressembler à:. /:controller/:id/:action

Si vous êtes d'accord, comment puis-je y parvenir?

Si vous n'êtes pas d'accord, s'il vous plaît laissez-moi savoir pourquoi. (Je suis nouveau à Ruby on Rails, donc je suis toujours se habituer aux conventions MVC).

Un conseil serait génial!

Était-ce utile?

La solution

Oui, vous pouvez! Tel est le cas d'un itinéraire nommé! Tout ce que vous avez à faire est, dans votre route.rb ajouter ce lien:

map.asked 'profiles/:id/asked', :controller => 'profiles', :action => 'asked'

Cette route peut être invoquée avec asked_path (: id => @profile) Il suffit de changer votre link_to dans les vues à:

link_to "Profile", asked_path(:id => @profile)

Je ne mérite pas un upvote pour ce que je viens de tirer dehors du fichier routes.rb lui-même. Si vous avez regardé attentivement le autogénérés routes.rb vous verrez ceci:

  # Sample of named route:
  #   map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase'
  # This route can be invoked with purchase_url(:id => product.id)

Si vous voulez le rendre plus générique, je l'ai pas essayé .. mais je pense que cela devrait fonctionner quand même:

map.routeany ":controller/:id/:action"

et dans la vue:

link_to "Route to something...", routeany_path(:controller => "somecontroller", :action => "someaction", :id => @somecontroller)

Quoi qu'il en soit, cheers! :)

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