问题
我试图在我的视图中重用错误消息块.
下面是位置/ _error_messages.html.erb中写的块
<% if @position.errors.any? %> <div id="error_explanation"> <div class="alert alert-error"> The form contains <%= pluralize(@position.errors.count,"error") %>. </div> <ul> <% @position.errors.full_messages.each do |msg| %> <li>* <%= msg %></li> <% end %> </ul> </div> <% end %>
问题是我必须在每个模型中创建类似的局部视图,它使用不同的对象重复相同的代码,即@ user,@ client等.
补救
我在共享文件夹shared / _error_messages.html.erb中创建了一个erb,并编写了以下代码.
<% def error_message(active_object) %> <% if active_object.errors.any? %> <div id="error_explanation"> <div class="alert alert-error"> The form contains <%= pluralize(active_object.errors.count,"error") %>. </div> <ul> <% active_object.errors.full_messages.each do |msg| %> <li>* <%= msg %></li> <% end %> </ul> </div> <% end %> <% end %>
然后在视图文件中. positions / new.html.erb我写了下面的代码
<div id="error@R_301_460@"> <%= render "shared/error_messages" %> <%= error_message(@position) %> </div>
这意味着现在我可以在所有创建和更新操作中使用相同的代码.
我想知道,这是一种正确的方法吗?或者还有其他选择吗?