Eh bien, je vous conseille de suivre la convention de Rails. Si vous insistez toujours sur l'utilisation de ces URL «étranges» et que vous voulez ignorer les problèmes/maux de tête que cela peut créer lors du développement, essayez d'utiliser Refraction. Je ne veux pas être impoli mais actuellement, il me semble que vous ne compreniez pas pourquoi les URL reposantes sont comme elles sont. S'il vous plaît, comprenez d'abord la conception derrière ce concept, puis repensez votre application/contrôleur et votre conception de routage. Je parie que vous serez éclairé. Dans cet exemple, votre URL devrait probablement être /regions/1/payrolls
avec map.resources :regions, :has_many => :payrolls
. Ensuite, votre liste de paie serait rendue par le PayrollsController
ayant un params[:region_id]
- et cela a du sens (et probablement ce que vous avez essayé de réaliser avec votre mise en page d'URL). Extrait de code:
def index
if params[:region_id]
@region = Region.find(params[:region_id])
@payrolls = @region.payrolls
else
@payrolls = Payroll.all
end
end
Si vous voulez toujours avoir une ressource sous une URL différente du nom, utilisez ce qui suit:
map.resources :regions do |regions|
regions.resources :tasks, :as => :payrolls
end
Cela cartographier les ressources imbriquées au contrôleur de tâches à l'aide de la partie URL du nom "salaires". Mais cela ne fonctionne probablement pas comme vous pouvez vous y attendre car une logique reposante signifie que vous devez gérer le modèle de paie dans le PayrollsController
. Sinon, vous pourriez rencontrer un code étrange. Peut-être que votre conception de la TasksController
est juste faux? Rails s'attendra probablement à ce que les tâches soient transférées à votre contrôleur de tâches bien que vous le nommez les paies. Cela peut être déroutant au moins (cependant, il ne s'attend pas réellement à ce que ces modèles soient des tâches, donc cela fonctionnera probablement). «Repos» signifie également que votre application doit répondre aux verbes standard d'une ressource, et pas seulement utiliser des routes «ingénieuses». Il s'agit aussi des verbes http GET, PUT, DELETE et POST, et bien sûr des actions par défaut "edit", "new" etc. N'essayez pas de rendre vos contrôleurs gros et compliqués. Suivez la devise "contrôleurs skinny - gros modèles".
Vous voyez? Je savais que quelqu'un pourrait m'aider avec ça! : D C'est juste ce que je cherche. Je vous remercie! –
P.S. - Oui, j'ai besoin de relire cette documentation. Il y a beaucoup de choses que je dois relire. Juste besoin de terminer ce projet actuel. (Merci encore) –
Oh, attends ...Que dois-je faire si je veux que l'URL contienne une "paie", mais utilise-t-elle le contrôleur de tâches pour les demandes de paie? –