ruby-on-rails – 不赞成在模板名称中传递模板处理程序.意思?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 不赞成在模板名称中传递模板处理程序.意思?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在试图弄清楚这个错误信息是什么意思,但是不能弄清楚.

这是完整的信息

  1. DEPRECATION WARNING: Passing a template handler in the template name
  2. is deprecated. You can simply remove the handler name or pass render
  3. :handlers => [:jbuilder] instead. (called from realtime at
  4. /Users/Arel/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/benchmark.rb:295)

这里是代码

  1. it "is logged in" do
  2. post "/api/v1/login",user_login: {email: 'test@test.com',password: '12345678' }
  3. response.status.should be(201)
  4. end

什么是模板处理程序,为什么它认为我在模板名称中传递它?什么模板?

编辑:

Sessions_controller.控制器被登录路径调用.

  1. class Api::V1::SessionsController < Devise::SessionsController
  2. before_filter :authenticate_user!,except: [:create,:destroy]
  3. before_filter :ensure_params_exist
  4. skip_before_filter :verify_authenticity_token
  5.  
  6. def create
  7. resource = User.find_for_database_authentication(email: params[:user_login][:email])
  8. return invalid_login_attempt unless resource
  9.  
  10. if resource.valid_password?(params[:user_login][:password])
  11. sign_in("user",resource)
  12. resource.ensure_authentication_token!
  13. render 'api/v1/sessions/new.json.jbuilder',status: 201
  14. return
  15. end
  16. invalid_login_attempt
  17. end
  18.  
  19. def destroy
  20. current_user.reset_authentication_token
  21. render json: {success: true}
  22. end
  23.  
  24. protected
  25.  
  26. def ensure_params_exist
  27. return unless params[:user_login].blank?
  28. render json: {success: false,message: "missing user_login parameter"},status: 422
  29. end
  30.  
  31. def invalid_login_attempt
  32. render 'api/v1/sessions/invalid.json.jbuilder',status: 401
  33. end
  34. end

解决方法

当您从控制器执行渲染时,您不再需要将文件格式或处理程序作为文件名的一部分传递.相反,你会这样做:
  1. render 'api/v1/sessions/new',:formats => [:json],:handlers => [:jbuilder],status: 201

这提供了以多种格式呈现的动作的便利.例如,您可以简单地传递一系列接受的格式,而不是为每种格式呈现单独的模板:

  1. render 'api/v1/sessions/foo',:formats => [:html,:js,:xml]
  2. #=> handles html,js,and xml requests
  3. #=> renders to foo.html,foo.js,and foo.xml,respectively

将数组传递给:构建器允许您指定在呈现时使用的模板构建器:

  1. render 'api/v1/sessions/foo',:handlers => [:jbuilder]
  2. #=> renders to foo.json.jbuilder

猜你在找的Ruby相关文章