微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我一直在试图弄清楚这个错误信息是什么意思,但是不能弄清楚.

这是完整的信息

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)

这里是代码

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

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

编辑:

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

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

解决方法

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐