ruby-on-rails - matchers - rspec rails documentation
Lo que hace pasar un controlador de plantilla en el nombre de la plantilla está en desuso. ¿media? (1)
Al representar desde la acción de su controlador, ya no necesita pasar el formato de archivo o el controlador como parte del nombre del archivo. En su lugar, harías esto:
render ''api/v1/sessions/new'', :formats => [:json], :handlers => [:jbuilder], status: 201
Esto proporciona conveniencia para acciones que se representan en múltiples formatos. Por ejemplo, en lugar de presentar una plantilla separada para cada uno de los formatos, simplemente puede pasar una serie de formatos aceptados para render
:
render ''api/v1/sessions/foo'', :formats => [:html, :js, :xml]
#=> handles html, js, and xml requests
#=> renders to foo.html, foo.js, and foo.xml, respectively
Al pasar una matriz a :builders
permite especificar el (los) creador (es) de plantillas a usar cuando se procesa:
render ''api/v1/sessions/foo'', :formats => [:json], :handlers => [:jbuilder]
#=> renders to foo.json.jbuilder
He estado tratando de averiguar qué significa este mensaje de error, pero no puedo resolverlo.
Aquí está el mensaje completo
DEPRECATION WARNING: Passing a template handler in the template name
is deprecated. You can simply remove the handler name or pass render
:handlers => [:jbuilder] instead. (called from realtime at
/Users/Arel/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/benchmark.rb:295)
Y aquí está el código:
it "is logged in" do
post "/api/v1/login", user_login: {email: ''[email protected]'', password: ''12345678'' }
response.status.should be(201)
end
¿Qué es un template handler
y por qué cree que lo estoy pasando en el template name
la template name
? Que plantilla
EDITAR:
Sessions_controller
. El controlador está siendo llamado por la ruta de acceso.
class Api::V1::SessionsController < Devise::SessionsController
before_filter :authenticate_user!, except: [:create, :destroy]
before_filter :ensure_params_exist
skip_before_filter :verify_authenticity_token
def create
resource = User.find_for_database_authentication(email: params[:user_login][:email])
return invalid_login_attempt unless resource
if resource.valid_password?(params[:user_login][:password])
sign_in("user", resource)
resource.ensure_authentication_token!
render ''api/v1/sessions/new.json.jbuilder'', status: 201
return
end
invalid_login_attempt
end
def destroy
current_user.reset_authentication_token
render json: {success: true}
end
protected
def ensure_params_exist
return unless params[:user_login].blank?
render json: {success: false, message: "missing user_login parameter"}, status: 422
end
def invalid_login_attempt
render ''api/v1/sessions/invalid.json.jbuilder'', status: 401
end
end