J'ai deux modèles - User
et Entry
- qui sont liés par une relation has_many
(un utilisateur a beaucoup d'entrées). J'utilise le routage RESTful, et ont les éléments suivants dans mon dossier routes.rb:Forme partielle avec routes imbriquées
map.resource :user, :controller => "users" do |user|
user.resources :entries
end
Cela semble fonctionner, mais dans mon fichier _form partiel, quand je fais ceci:
form_for [@current_user, @entry] do |f|
# Form stuff
end
Il génère une URL comme ceci:
/user/entries.%23%3Cuser:0xb6a6aea8%3E
au lieu de
/user/entrées
Suis-je manque quelque chose?
Je devrais noter que les classes correctes sont appliquées au formulaire en faisant la création contre l'édition, ainsi il semble bien interpréter ce que je suis essayant à faire - c'est juste que je ne peux pas soumettre le formulaire à une URL invalide.
Je ne suis pas sûr que ce soit mieux. Quand un utilisateur regarde * leurs * entrées, je ne veux pas que l'ID d'utilisateur fasse partie de l'URL (c'est inutile et invite à falsifier). Autrement dit, je préférerais avoir/user/entries que/user/1/entries. – jerhinesmith
J'avais tort: vous pouvez imbriquer des ressources de la ressource. Mais si vous le faites, vous n'avez pas besoin d'écrire les deux objets dans votre formulaire_for (utilisateur et entrée). – uzzz