缺少部分Ruby第8章教程

时间:2012-01-21 22:57:47

标签: ruby-on-rails-3

我正在使用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中有不同的方法吗?请告诉我,因为我花了很多时间试图解决这个问题。

5 个答案:

答案 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' %>

仅此而已。

我希望这会有所帮助