H. *_*ill 8 ruby rspec ruby-on-rails devise ruby-on-rails-3
我正在使用Rails 3和Devise的现有Web应用程序.我目前的任务是向应用程序添加JSON API.我创建了一个Mobile :: SessionsController(<Devise :: SessionsController),它使用仅数据响应实现'#create'.
问题出在路由中.现在,routes.rb的相关部分如下:
# For the web app:
devise_for :users, :controllers => {:sessions => 'sessions',
:registrations => 'registrations'}
as :user do
get "/login" => "devise/sessions#new"
get "/logout" => "devise/sessions#destroy", :as => :logout
post '/signup' => 'registrations#signup', :as => :signup
end
# And for the API, later on:
namespace :api do
namespace :user do
devise_for :users, :controllers => {:sessions => 'mobile/sessions'},
skip: :all
devise_scope :user do
post 'login' => 'mobile/sessions#create'
end
...
Run Code Online (Sandbox Code Playgroud)
数据端点位于/ api/user/login.rake routes列出以下内容:
api_user_login POST /api/user/login(.:format) api/user/mobile/sessions#create
Run Code Online (Sandbox Code Playgroud)
在我的规范中,有以下内容:
describe Mobile::SessionsController do
render_views
describe '#create' do
context 'for some condition' do
let(:params) do
{
# basic params
}
end
before do
post :create, params.merge(format: :json)
end
it 'should render a json response' do
expect(response.headers['Content-Type']).to eq 'application/json; charset=utf-8'
end
...
Run Code Online (Sandbox Code Playgroud)
当我运行规范时,它会给出以下错误:
AbstractController::ActionNotFound: Could not find devise mapping for path "/mobile/sessions/create.json?params=blah.
This may happen for two reasons:
1) You forgot to wrap your route inside the scope block. For example:
devise_scope :user do
get "/some/route" => "some_devise_controller"
end
2) You are testing a Devise controller bypassing the router.
If so, you can explicitly tell Devise which mapping to use:
@request.env["devise.mapping"] = Devise.mappings[:user]
Run Code Online (Sandbox Code Playgroud)
我在第二个devise_for块中尝试了许多不同的配置(模块,无论是否使用skip :: all,完全删除第二个devise_for,将它放在命名空间的不同级别)我无法摆脱这个错误.我的猜测是那里的第二个选项(devise.mapping位)不是解决方案,因为它似乎根本不应绕过路由器.而且由于我的路线恰好是第一种选择所暗示的那种方式,我对于如何解决这个问题感到困惑.我怎么能让这个东西工作?
感谢帮助!
| 归档时间: |
|
| 查看次数: |
666 次 |
| 最近记录: |