加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ruby On Rails – 重用错误消息部分视图

发布时间:2020-12-16 22:18:58 所属栏目:百科 来源:网络整理
导读:问题 我试图在我的视图中重用错误消息块. 下面是位置/ _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") %. /di
问题

我试图在我的视图中重用错误消息块.

下面是位置/ _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="errorbox"> 
 <%= render "shared/error_messages" %>
 <%= error_message(@position) %>
</div>

这意味着现在我可以在所有创建和更新操作中使用相同的代码.

我想知道,这是一种正确的方法吗?或者还有其他选择吗?

解决方法

不,在视图中定义方法不是正确的方法.我认为你应该用你的第一个部分替换@position用更通用的方式命名的局部变量,例如object并用以下方法渲染这个部分:
<%= render 'shared/error_messages',object: @position %>

它将@position作为局部变量对象传递给partial.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读