即使模板存在,ActionView :: MissingTemplate

时间:2018-11-06 04:10:24

标签: ruby-on-rails ruby

我正在构建一个简单的登录屏幕。如果没有匹配的用户或密码不正确,我想向客户返回:internal_server_error。但是,我收到以下丢失的模板错误:

  

ActionView :: MissingTemplate(缺少模板登录名/索引,   带有{:locale => [:en] 、: formats => [:json],   :variants => [],:handlers => [:: raw,:erb,:html,:builder,:ruby,   :coffee,:jbuilder]}。搜索到:*   “ C:/ Shelf / myGroceryList / app / views”

我感到困惑的是,我在index.html.erb中有一个views/login模板。有想法吗?

路线:

  post '/login', to: 'login#show'

Controller(login_controller.rb):

class LoginController < ApplicationController
  protect_from_forgery with: :null_session

  def index

  end

  def show
    username = params.values.last["email"]
    password = params.values.last["password"]
    loginType = params.values.last["loginType"]

    if loginType == "Login"
      login(username, password)
    else
      createNewUser(username, password)
    end
  end

  def login(username, password)
    begin
      user = User.find_by(username: username)
      raise(StandardError) if user.password != password
    rescue
      render 'index', :status => :internal_server_error
    end
  end

  def createNewUser(username, password)
    User.new(username: username, password: password)
  end
end

查看(index.html.erb):

<body><%= javascript_pack_tag 'login' %></body>

1 个答案:

答案 0 :(得分:1)

  

ActionView :: MissingTemplate(缺少模板登录名/索引,   带有{:locale => [:en] 、: formats => [:json],   :variants => [],:handlers => [:: raw,:erb,:html,:builder,:ruby,   :coffee,:jbuilder]}。搜索到:*   “ C:/ Shelf / myGroceryList / app / views”

该错误表示找不到名为 index 且格式为 json 的文件。由于您使用的是 API 请求/响应的格式可能为 json ,而不是 html 。也就是说,您需要在index.json.erb创建一个app/views/login来解决该错误。