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)
关于这个问题的任何指示都会有所帮助,在此先感谢
请求的格式是什么?,对于第一个模板 ( folder/_file_name.html.erb),只有当请求格式是 html 时才正确,但如果它是 ajax 或您的应用程序中的任何其他自定义类型,则不正确。folder/_file_name.erb如果您想对所有格式使用相同的部分,一个快速的解决方案是将其重命名为
是否存在与该文件同名的控制器操作?
如果你有一个带有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"