我有一个管理员名称空间,它为我提供了通常的路线,例如admin_projects和admin_project,但它们并不像通常那样运行。这是我的第一个Rails 2.3项目,所以也许我通过Google找不到任何信息。已在Rails 2.3中更改了名称空间路由吗?
map.namespace(:admin) do |admin|
admin.resources :projects
end
奇怪的是对于一个给定的URL(如/管理/项目/ 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”似乎包含整个对象,所以我尽量直接传递的ID和它的工作原理:
<%= admin_project_path(@project.id) %> # => /admin/projects/1
这不会是那么糟糕,但是当它涉及到形式我通常使用:但是,[管理员,@object]:
<%= url_for [:admin, @project.id] %> # => undefined method `admin_fixnum_path'
所以我不能传入一个id,因为它需要一个对象类来计算出正确的路线。
<%= url_for [:admin, @project] %> # => Unfortunately this yields the same error as passing a object to admin_project_path, which is what it is calling.
我不能发现任何错误,这是非常标准的,所以我不知道是怎么了?...
顺便提及我当然可以得到周围的form_for问题具有以下长手版本: <%的form_for @project,:URL => admin_project_path(@ project.id):方法=>:放do | f | %> – Kris 2009-07-29 15:42:46