Si commit est un contrôleur qui utilise RESTful: sha au lieu d'un identifiant pour trouver des documents. Vous pouvez le faire à la place:
map.resource :commits, :path_prefix => ':user/:repo', :as => 'commit'
Il crée les itinéraires standards RESTful qui ressemblent à http://yoursite.tld/:user/:repo/commit/:id
Encore une fois, si vous ne serez jamais traduisez la partie id dans l'URL d'un id commit, puis il y a aucune raison pour laquelle vous ne pouvez pas l'utiliser comme: valeur sha.
exemple:
class CommitController < ApplicationController
def show
@commit = Commit.find(:first, :conditions => {:sha => params[:id]})
end
...
end
Vous pouvez également plus to_param tour dans le modèle engager à retourner la valeur sha.
class Commt < ActiveRecord::Base
...
def to_param
sha
end
end
Alors que maintenant link_to commit_url(@commit, :user => current_user, :repo => @repo)
fournira un URL correspondant à votre schéma.
Quel est exactement le problème que vous rencontrez? Qu'avez-vous essayé et qu'est-ce qui n'a pas fonctionné? Si vous voulez utiliser le même chemin que celui utilisé par github, utilisez simplement la même route. – Eilon
Je voulais être capable d'avoir des ressources imbriquées à l'intérieur de cela, et j'ai compris que je pouvais le faire avec map.with_options: path_prefix => '/: user' do .... –