J'ai un espace de noms d'administrateur qui me donne les routes habituelles telles que admin_projects et admin_project, cependant ils ne se comportent pas comme d'habitude. Ceci est mon premier projet Rails 2.3 donc peut-être lié je ne trouve pas d'informations via Google cependant.Le routage nomméspaced a-t-il changé dans Rails 2.3?
map.namespace(:admin) do |admin|
admin.resources :projects
end
La chose étrange est pour une URL donnée (. Par exemple/admin/projets/1) Je ne dois pas passer dans un objet pour obtenir les URL il les devine en quelque sorte:
<%= admin_project_path %> # => /admin/projects/1
Pas de soucis, pas vraiment un problème que je n'ai pas remarqué auparavant.
Mais si je tente de transmettre un objet comme cela est habituel:
<%= admin_project_path(@project) %> # => admin_project_url failed to generate from {:controller=>"admin/projects", :action=>"show", :id=>#<Project id: 1, name: "teamc...>
« : id » semble contenir tout l'objet, alors j'essaie passer l'identifiant directement et cela fonctionne:
<%= admin_project_path(@project.id) %> # => /admin/projects/1
Ce ne serait pas si mauvais, mais en ce qui concerne les formes que j'utilise habituellement [: admin, @object], cependant:
<%= url_for [:admin, @project.id] %> # => undefined method `admin_fixnum_path'
Donc, je ne peux pas passer un ID, car il a besoin d'une classe d'objets pour trouver la bonne route à utiliser.
<%= url_for [:admin, @project] %> # => Unfortunately this yields the same error as passing a object to admin_project_path, which is what it is calling.
Je ne peux pas repérer les erreurs, ce qui est assez standard, donc je ne suis pas sûr de ce qui va mal ...
Soit dit en passant, je peux bien sûr de contourner le problème form_for avec la version longue de la main suivante: <% form_for @project,: url => admin_project_path (@ project.id),: method =>: mettre fais | f | %> – Kris