首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在模板名称中传递模板处理程序的操作已被弃用。卑劣?

在模板名称中传递模板处理程序的操作已被弃用。卑劣?
EN

Stack Overflow用户
提问于 2013-10-03 04:21:45
回答 1查看 5.8K关注 0票数 18

我一直在尝试弄清楚这个错误消息是什么意思,但还是弄不明白。

下面是完整的信息

代码语言:javascript
复制
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)

下面是代码:

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

什么是template handler,为什么它认为我是在template name中传递它?什么模板?

编辑:

Sessions_controller。该控制器由登录路径调用。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-03 04:57:52

从控制器操作进行渲染时,不再需要将文件格式或处理程序作为文件名的一部分进行传递。取而代之的是,你可以这样做:

代码语言:javascript
复制
render 'api/v1/sessions/new', :formats => [:json], :handlers => [:jbuilder], status: 201

这为以多种格式呈现的操作提供了便利。例如,无需为每种格式呈现单独的模板,只需将接受的格式数组传递给render即可

代码语言:javascript
复制
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

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

代码语言:javascript
复制
render 'api/v1/sessions/foo', :formats => [:json], :handlers => [:jbuilder]
#=> renders to foo.json.jbuilder
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19146130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档