我一直在搜索,似乎找不到有类似问题的人。 我正在研究Michael Hartle的RoR教程,我发现了一个奇怪的问题。我一直在跟踪他对T的指示,除了Rails 4和Ruby 2.1与他正在使用的旧版本不同。 如果用户尝试使用错误数据注册时返回错误,则会创建一个包含的erb文件,标题为_error_messages.html.erb 这是文件的代码:
<% if @user.errors.any? %>
<div class="error_explanation round padding_10">
<h3 class="error_explanation">
<%= pluralize(@user.errors.count, "error") %>
prohibited this user from being saved:
</h3>
<p>There were problems with the following fields:</p>
<ul>
<%= @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<br />
现在,当他执行这段代码时,他会得到你所期望的。在User.new尝试无效之后由@user对象指定的无序错误列表。
然而,我得到的输出 - 实际的HTML - 是:
<div class="error_explanation round padding_10">
<h3 class="error_explanation">
2 errors
prohibited this user from being saved:
</h3>
<p>There were problems with the following fields:</p>
<ul>
<li>Password can't be blank</li>
<li>Password is too short (minimum is 6 characters)</li>
["Password can't be blank", "Password is too short (minimum is 6 characters)"] </ul>
</div>
<br />
正如你所看到的,我正在获得额外奖金的预期输出。还输出了完整的错误数组:["Password can't be blank", "Password is too short (minimum is 6 characters)"]
我已经看了一些抑制的建议 - 我已经尝试了我能想到的每一种排列,例如:
@user.errors.full_messages.each;nil do |msg|
#and
@user.errors.full_messages.each do;nil |msg|
#and
@user.errors.full_messages.each do |msg|;nil
#and
end;nil
我发现语法不正确并不奇怪。 我错过了什么?为什么全阵列转储? 感谢任何伸出援手的人 - 这是相当令人沮丧的。
答案 0 :(得分:6)
从第=
行中删除<%= @user.errors.full_messages.each do |msg| %>
。就是这样。