У меня есть пространство имен администратора, которое дает мне обычные маршруты, такие как admin_projects и admin_project, однако они не ведут себя обычным образом. Это мой первый проект на Rails 2.3, поэтому, возможно, я не могу найти какую-либо информацию через Google.
map.namespace(:admin) do |admin|
admin.resources :projects
end
Странная вещь для данного URL (например, / admin / projects / 1). Мне не нужно передавать объект, чтобы получить URL, он как-то угадывает их:
<%= admin_project_path %> # => /admin/projects/1
Не беспокойся, не проблема, просто не замечал этого раньше.
Но если я попытаюсь передать объект как обычно:
<%= admin_project_path(@project) %> # => admin_project_url failed to generate from {:controller=>"admin/projects", :action=>"show", :id=>#<Project id: 1, name: "teamc...>
": id", кажется, содержит весь объект, поэтому я пытаюсь передать идентификатор напрямую, и это работает:
<%= admin_project_path(@project.id) %> # => /admin/projects/1
Это не так уж плохо, но когда дело доходит до форм, я обычно использую [: admin, @object], однако:
<%= url_for [:admin, @project.id] %> # => undefined method `admin_fixnum_path'
Так что я не могу передать идентификатор, так как ему нужен класс объектов для определения правильного маршрута для использования.
<%= url_for [:admin, @project] %> # => Unfortunately this yields the same error as passing a object to admin_project_path, which is what it is calling.
Я не могу обнаружить никаких ошибок, и это довольно стандартно, поэтому я не уверен, что происходит не так ...