gpt4 book ai didi

ruby-on-rails - Ruby On Rails - 重用错误消息部分 View

转载 作者:数据小太阳 更新时间:2023-10-29 07:03:32 27 4
gpt4 key购买 nike

问题

我试图在我的 View 中重用错误消息 block 。

下面是positions/_error_messages.html.erb中写的 block

<% 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 %>

问题是我必须在每个模型中创建类似的部分 View ,这有点像用不同的对象重复相同的代码,即@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>

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

我想知道,这样做是否正确?或者还有其他选择吗?

最佳答案

不,在 View 中定义方法不是正确的方法。我认为您应该将第一个部分中的 @position 替换为以更通用的方式命名的局部变量,例如 object 并将此部分呈现为:

<%= render 'shared/error_messages', object: @position %>

@position 作为局部变量 object 传递给局部变量。

关于ruby-on-rails - Ruby On Rails - 重用错误消息部分 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18484885/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com