我正在从 Michael Hartl 书中的示例应用程序构建一个 Rails 应用程序。为了在用户注册时显示错误消息,我在共享目录中使用了一个部分 - app/views/shared/_error_messages.html.erb:
<%if @fact %>
<% @data = @fact %>
<% elsif @user %>
<% @data = @user %>
<% end %>
<% if @data.errors.any? %>
<div id="error_explanation">
<div class="alert alert-error">
The form contains <%= pluralize(@data.errors.count, "error") %>.
</div>
<ul>
<% @data.errors.full_messages.each do |msg| %>
<li>* <%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
最初,这个部分刚开始是这样的:
<% if @user.errors.any? %>
但是,由于我决定重新使用此部分以在其他页面上显示错误,因此我不得不使用不同的对象(@user、@fact),具体取决于我在哪个页面上使用它。这很容易通过在顶部添加 IF 语句来解决,
<%if @fact %>
<% @data = @fact %>
<% elsif @user %>
<% @data = @user %>
<% end %>
- 但这感觉很恶心。是否有一个控制器我应该将这种逻辑用于共享部分?