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" にはオブジェクト全体が含まれているように見えるので、ID を直接渡してみると、次のように機能します。
<%= admin_project_path(@project.id) %> # => /admin/projects/1
これはそれほど悪くはありませんが、フォームに関しては通常 [:admin, @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.
間違いを見つけることはできません。これはかなり標準的なものなので、何が問題なのかわかりません...