Vik*_*bde 6 ruby ruby-on-rails ruby-on-rails-3
我试图在我的视图中重用错误消息块.
下面是位置/ _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 %>
Run Code Online (Sandbox Code Playgroud)
问题是我必须在每个模型中创建类似的局部视图,它是用不同的对象重复相同的代码,即@ 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 %>
Run Code Online (Sandbox Code Playgroud)
然后在视图文件中.positions/new.html.erb我写了下面的代码
<div id="errorbox">
<%= render "shared/error_messages" %>
<%= error_message(@position) %>
</div>
Run Code Online (Sandbox Code Playgroud)
这意味着现在我可以在所有创建和更新操作中使用相同的代码.
不,在视图中定义方法不是正确的方法.我认为你应该用@position你的第一个部分代替用更通用的方式命名的局部变量,例如object用以下方法渲染这个部分:
<%= render 'shared/error_messages', object: @position %>
Run Code Online (Sandbox Code Playgroud)
它@position作为局部变量传递给局部变量object.
| 归档时间: |
|
| 查看次数: |
3533 次 |
| 最近记录: |