-1

Rails、iOS、およびdeviseを使用しています。シングルユーザーを読みたい。パスはusers/:idになります。

次のエラーが発生します。

Started GET "/users/0" for 127.0.0.1 at 2012-06-11 17:37:50 -0600
Processing by UsersController#show as JSON
  Parameters: {"id"=>"0"}
[Devise] Could not find devise mapping for path "/users/0".
Maybe you forgot to wrap your route inside the scope block? For example:

devise_scope :user do
  match "/some/route" => "some_devise_controller"
end

Completed 500 Internal Server Error in 0ms

AbstractController::ActionNotFound (Could not find devise mapping for path "/users/0".
Maybe you forgot to wrap your route inside the scope block? For example:

devise_scope :user do
  match "/some/route" => "some_devise_controller"
end

リソース:usersをdevise_for:usersの下に配置し、「users /:id」=>「users#show」を取得して「users /:id」=>「users#show」と一致させてみました。

何か案は?

4

2 に答える 2

1

これが私の最終的な解決策です:

devise_for :users, :controllers => { :registrations => "users"}

devise_scope :user do
  get "users/:id" => "users#show"
end
于 2012-06-15T14:57:08.260 に答える
0

「ルートの構成」と呼ばれるドキュメントのセクションを確認してください。

https://github.com/plataformatec/devise#readme

回答も部分的にエラーメッセージに含まれています。

devise_forがその線より下のルートよりも優先されるように見える理由についてはroutes.rb、ガイドを確認してください。

http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions

Railsルートは指定された順序で照合されるため、リソース:photosがget'photos / poll'の上にある場合、リソース行のshowactionのルートはget行の前に照合されます。これを修正するには、get行をresources行の上に移動して、最初に一致するようにします。

于 2012-06-11T23:59:35.800 に答える