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
您可以通过将错误更改为:标题:禁止
是否要呈现模板
或部分
?分部词以开头。模板不需要。阿尔索