ActionView :: TemplateError(缺少模板)在ruby on rails上

wae*_*218 6 ruby rendering ruby-on-rails actionview

我正在运行一个RoR应用程序(rails 2.3.8,ruby 1.8.7),应用程序在我的本地计算机上正常运行.但在生产时,日志显示以下错误:

ActionView::TemplateError (Missing template folder/_file_name.erb in view path app/views) on line #19 of app/views/layouts/main.rhtml:
19:     <%= render :partial => "folder/file_name" -%>
Run Code Online (Sandbox Code Playgroud)

文件名存在folder/_file_name.html.erb,我试图重现生产环境上的问题,但没有任何运气,由于某种原因导轨应用程序folder/_file_name.erb在某些时候要求,而其他时候它搜索正确的文件folder/_file_name.html.erb.

有人可以向我解释发生了什么事吗?

对于.rhtml文件,rails应用程序请求.erb有时也会出现同样的情况,而其他人则获得正确的.rhtml文件

更新:

<%= render :partial => "shared/meta_tags" -%>
<%= render :partial => "shared/common_resources" -%>
<%= render :partial => 'shared/ads/oas' -%>
Run Code Online (Sandbox Code Playgroud)

关于这个问题的任何指示都会有所帮助,在此先感谢

Fer*_*ido 5

请求的格式是什么?,对于第一个模板 ( folder/_file_name.html.erb),只有当请求格式是 html 时才正确,但如果它是 ajax 或您的应用程序中的任何其他自定义类型,则不正确。folder/_file_name.erb如果您想对所有格式使用相同的部分,一个快速的解决方案是将其重命名为


Jef*_*een 5

是否存在与该文件同名的控制器操作?

如果你有一个带有bar动作的foo控制器而你的动作中没有定义响应,Rails将尝试渲染view/foo/bar.html.erb.

如果那不是你想要的,你需要在控制器中定义一个响应并告诉Rails渲染适当的部分,如下所示:

respond_to do |format|
   format.html do
       render :partial => "/foo/bar"
   end
end
Run Code Online (Sandbox Code Playgroud)

在后一种情况下,Rails将呈现"views/foo/_bar.html.erb"