3

私はこれを持っていますconfig/routed.db

namespace :admin do
  resources :users
  resources :events
end

Railsが提供するスキャフォールディングを使用してモデルを生成Userし、次にRailsを使用してadmin / adminコントローラーを生成し、generateすべてのユーザー関連のものをコントローラー/ビュー/ヘルパー内のadminサブディレクトリーに移動しました。はい、admin_いくつかの場所に追加する必要があり、フォームの一部をに変更する必要がありform_for(@user)ましたform_for([:admin, @user])

新しいユーザーを作成しようとすると(これはPOSTユーザーデータの場合です)、次のエラーメッセージが表示されます。

undefined method `user_url' for #<Admin::UsersController:0x13f408e0>

アプリケーションレベルのトレースは、ここでエラーが発生したことを示しています。

app/controllers/admin/users_controller.rb:47:in `create'

このエラーが発生するコード行:

format.html { redirect_to @user, :notice => 'User was successfully created.' }

上記の行はrespond_toブロック内にあります。

だから、私は2つの質問があります:

  1. この問題を修正するにはどうすればよいですか?
  2. これを行うためのより賢く、より良い、レールの方法はありますか?

また、あなたが私がこれをより賢く、より良い、鉄道でやり直すことを提案した場合のボーナスポイント!まあ、とにかくやります!:D


アップデート

ああ、私は関連するかもしれない何かをほとんど忘れていました!また、Admin::UsersController継承元を作成しましたAdmin::AdminController(通常はから継承しますApplicationController):

Admin::UsersController < Admin::AdminController

4

1 に答える 1

5

リダイレクトでも名前空間を使用する必要があります。

redirect_to [:admin, @user] #...

また

redirect_to admin_user_path(@user) #...
于 2012-11-05T00:00:58.180 に答える