我正在使用Michael Hartl的Ruby on Rails教程 - 第8章 - Rails 3 我使用rails 3.1 在new.html.erb文件中我有:
<h1>Sign up</h1>
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages' %>
尝试访问http://localhost:3000/signup,它会给我以下消息:
ActionView::MissingTemplate in Users#new
Missing partial /shared/error_messages with {:handlers=>[:erb, :builder, :coffee],
:formats=>[:html], :locale=>[:en, :en]}. Searched in:
* "/Users/macbook/rails_projects/sample_app/app/views"
我用谷歌搜索但找不到这个答案。刚才发布了同样的问题: Ruby Chapter 8 tutorial partial file not found
我尝试了什么: - 在共享前输入/ - put:partial =&gt;渲染后 -putting:target =&gt; @user
如果我没有将它放入共享文件夹,它可以正常工作。在rails 3.1.3中有不同的方法吗?请告诉我,因为我花了很多时间试图解决这个问题。
答案 0 :(得分:8)
如果你说;
<%= render 'shared/error_messages' %>
它会在shared/error_messages
app/views/#{controller_name}
的部分名称
即。如果您处于users#signup
行动中,则会发现app/views/users/shared/error_messages
如果你的意思是app/views/shared/error_messages
那么你应该说以下几点。
<%= render '/shared/error_messages' %>
这只是避免歧义的唯一方法。
答案 1 :(得分:7)
您是否正确命名了文件(使用下划线)?那是我的问题......
<强> error_messages.html.erb 强>
应该是
<强> _error_messages.html.erb 强>
答案 2 :(得分:1)
就我而言,我已将共享文件夹共享命名为共享。 另外,检查部分以下划线开头。
答案 3 :(得分:0)
even stranger, I named mine _clinicaltrails.html.erb instead of _clinicaltrial.html.erb; riddle me that why making it singular worked, but thought I would leave my solution here too for frustrated newbs people in the future.
答案 4 :(得分:0)
在Rails 6应用程序上工作时,我也面临同样的挑战。
我已经在shared
目录内名为app/views
的目录中定义了我的部分。
然后我像这样在app/views/layouts/application.html.erb
文件中定义了局部变量:
<%= render partial: '_shared/mobile_header' %>
我不得不这样重新定义它:
<%= render partial: '/shared/mobile_header' %>
仅此而已。
我希望这会有所帮助