Ruby on rails Rails找不到模板

Ruby on rails Rails找不到模板,ruby-on-rails,actionview,Ruby On Rails,Actionview,当我选择此控制器操作的菜单项时,会收到以下错误消息: Rails 5.1 In my controllers/fw_exports_conttroller.rb, I have: def import_spreadsheet @import_spreadsheet = FwExport.new render template: "fw_exports/_import_spreadsheet" end 我证实了这一点 Processing by FwExportsController

当我选择此控制器操作的菜单项时,会收到以下错误消息:

Rails 5.1

In my controllers/fw_exports_conttroller.rb, I have:

def import_spreadsheet
  @import_spreadsheet = FwExport.new
  render template: "fw_exports/_import_spreadsheet"
end
我证实了这一点

Processing by FwExportsController#import_spreadsheet as HTML
ActionView::MissingTemplate (Missing template fw_exports/_import_spreadsheet with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :slim, :coffee, :jbuilder]}. Searched in:
  * "/home/utils/rails/follower_wonk/app/views"
  * "/home/utils/.rvm/gems/ruby-2.4.2/gems/devise_invitable-1.7.2/app/views"
  * "/home/utils/.rvm/gems/ruby-2.4.2/gems/devise-4.3.0/app/views"
):
FATAL -- : [d37603eb-3da3-4ad2-b81b-29198e6bb773] app/controllers/fw_exports_controller.rb:67:in `import_spreadsheet'
确实存在。有什么想法吗

或者,可能:

app/views/fw_exports/_import_spreadsheet.html.slim
类FwExportsController
如果您有
app/views/fw_exports/import_spreadsheet.html.slim
(一个视图,而不是一个部分),那么我认为它将按默认/约定进行渲染。

或者,可能:

app/views/fw_exports/_import_spreadsheet.html.slim
类FwExportsController
如果你有
app/views/fw\u exports/import\u spreadsheet.html.slim
(一个视图,而不是一个部分),那么我认为它将在默认情况下/约定进行渲染。

通过“\code>fw\u exports/\u import\u spreadsheet.html.slim
看起来像一个部分,渲染部分时,您可以跳过
partial
选项,只需在
views
文件夹后传递文件路径,在您的情况下:

class FwExportsController < ApplicationController

  def import_spreadsheet
    @import_spreadsheet = FwExport.new 
  end

end
注意:与不接受部分文件的
模板
选项不同,渲染“fw\u导出/导入电子表格”
将工作,即使文件没有“\u”前缀。slim看起来像一个部分文件,渲染部分时,您可以跳过
partial
选项,只需在
views
文件夹后传递文件路径,在您的情况下:

class FwExportsController < ApplicationController

  def import_spreadsheet
    @import_spreadsheet = FwExport.new 
  end

end
注意
渲染“fw\u导出/导入\u电子表格”
即使文件没有“\u”前缀也可以工作,这与
模板
选项不同,该选项不接受部分文件。

从和中看,您不应该在部分文件中加下划线

该文件指出:

Rails知道此视图属于不同的控制器,因为 字符串中嵌入的斜杠字符的。如果你想成为 显式,您可以使用:template选项(在 Rails 2.2及更早版本)

这意味着您不需要提供控制器的路径,因为您正在处理相同的路径:

根据@SebastiánPalma建议的编辑

def import_spreadsheet
  @import_spreadsheet = FwExport.new
  render 'fw_exports/import_spreadsheet'
end
应该简单地解决你的问题。在Rails V2.2之前还需要
模板
但由于您使用的是5.1,因此不需要使用它。您只需从中执行
渲染“导入电子表格”

,从中看起来不应在部分内容中加下划线

该文件指出:

Rails知道此视图属于不同的控制器,因为 字符串中嵌入的斜杠字符的。如果你想成为 显式,您可以使用:template选项(在 Rails 2.2及更早版本)

这意味着您不需要提供控制器的路径,因为您正在处理相同的路径:

根据@SebastiánPalma建议的编辑

def import_spreadsheet
  @import_spreadsheet = FwExport.new
  render 'fw_exports/import_spreadsheet'
end
应该简单地解决你的问题。在Rails V2.2之前还需要
模板

但由于您使用的是5.1,因此不需要使用它。您只需执行
渲染“导入电子表格”
我假设您需要渲染
模板
而不是
部分

要呈现
模板
,需要将
\u import\u spreadsheet.html.slim
重命名为
import\u spreadsheet.html.slim

下面是您在代码中所需的修改

步骤1

def import_spreadsheet
  @import_spreadsheet = FwExport.new
  render "fw_exports/import_spreadsheet"
end
在这里,您需要从
\u导入\u电子表格中删除
\u

步骤2


将文件重命名为
app/views/fw_exports/import_spreadsheet.html.slim
而不是
app/views/fw_exports/fw_import_spreadsheet.html.slim
我假设您需要呈现的是
模板
而不是
部分

要呈现
模板
,需要将
\u import\u spreadsheet.html.slim
重命名为
import\u spreadsheet.html.slim

下面是您在代码中所需的修改

步骤1

def import_spreadsheet
  @import_spreadsheet = FwExport.new
  render "fw_exports/import_spreadsheet"
end
在这里,您需要从
\u导入\u电子表格中删除
\u

步骤2


将该文件重命名为
app/views/fw_exports/import_spreadsheet.html.slim
,而不是
app/views/fw_exports/_import_spreadsheet.html.slim
,如果您刚刚更新到Rails 5.1并看到此错误,也可能是由于在Rails 5.1中删除了此方法而在控制器中使用了
不渲染
。这并不总是很明显,因为有时控制器行可能在堆栈跟踪的几层深处。但是,如果检查堆栈跟踪中所有控制器的行号,发现一个
无渲染
,就找到了罪魁祸首。如果这确实是您的问题,那么您需要做的就是替换此旧方法

例如,如果您的旧代码是:
不渲染任何内容:true,状态:403


如果您刚刚更新到Rails 5.1并看到此错误,则可以通过将其更改为:
head:planized
来修复此错误,因为此方法已在Rails 5.1中删除,因此在控制器中使用
render nothing
也可能导致此错误。这并不总是很明显,因为有时控制器行可能在堆栈跟踪的几层深处。但是,如果检查堆栈跟踪中所有控制器的行号,发现一个
无渲染
,就找到了罪魁祸首。如果这确实是您的问题,那么您需要做的就是替换此旧方法

例如,如果您的旧代码是:
不渲染任何内容:true,状态:403


您可以通过将错误更改为:
标题:禁止

是否要呈现
模板
部分
?分部词以
开头。模板不需要。阿尔索