gpt4 book ai didi

ruby-on-rails - rails : Field names

转载 作者:行者123 更新时间:2023-12-03 00:46:46 25 4
gpt4 key购买 nike

我有一个带有“电子邮件”字段的用户模型。

在我看来,我已将此字段的标签呈现为“电子邮件地址”,如下所示:

<%= form_for(:user) do |f| %>
<%= f.label :email, 'Email address' %><br /
<%= f.text_field :email %>
<% end %>

但是,当生成验证错误时,将使用“电子邮件”:

Email is invalid

我可以在模型中添加一些内容,以便 :email 始终呈现为“电子邮件地址”而不是简单的“电子邮件”吗?

非常感谢

最佳答案

您不需要重命名表列即可执行此操作。有一个非常干净的修复:

class User < ActiveRecord::Base
HUMAN_ATTRIBUTE_NAMES = {
:email => 'Email address',
:first_name => 'First name'
}

class << self
def human_attribute_name attribute_name
HUMAN_ATTRIBUTE_NAMES[attribute_name.to_sym] || super
end
end
end

我们所做的是创建一个属性的哈希值,我们要在其中自定义名称。您不必列出所有属性名称,因为许多属性名称可以按照您的需要开箱即用。然后我们重写 ActiveRecord 的 human_attribute_name 方法,尝试首先在哈希中查找名称。

这做了两件非常酷的事情:您不再需要在表单中指定自定义标签,并且您的错误消息也将自动具有新名称!作为奖励,您现在可以在任何地方使用这些名称,只需调用:

<%= User.human_attribute_name(:email) %>

这创建了一种更加统一的命名方法。如果您想下周将“电子邮件”更改为“电子邮件”,只需在一处进行即可。

希望这会有所帮助!

关于ruby-on-rails - rails : Field names,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4077561/

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