Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ruby验证错误消息需要更改_Ruby On Rails_Validation_Message - Fatal编程技术网

Ruby on rails ruby验证错误消息需要更改

Ruby on rails ruby验证错误消息需要更改,ruby-on-rails,validation,message,Ruby On Rails,Validation,Message,我有一个叫做“dropbox”的模型,它扩展了“Program”。方案具有以下验证: validates_presence_of :network_id, :name 因此,当您尝试创建dropbox时,如果不考虑这些,您(毫不奇怪)会得到以下消息: * Network can't be blank * Name can't be blank 问题是,在“dropbox”的上下文中,我们称之为“网络”“类别”。如何将网络不能为空错误消息更改为类别不能为空 ---编辑--- 我试过: acti

我有一个叫做“dropbox”的模型,它扩展了“Program”。方案具有以下验证:

validates_presence_of :network_id, :name
因此,当您尝试创建dropbox时,如果不考虑这些,您(毫不奇怪)会得到以下消息:

* Network can't be blank
* Name can't be blank
问题是,在“dropbox”的上下文中,我们称之为“网络”“类别”。如何将网络不能为空错误消息更改为类别不能为空

---编辑---

我试过:

activerecord:
  attributes:
    dropbox:
      network_id: Category
但这没有影响。然而,这是可行的:

activerecord:
  attributes:
    programme:
      network_id: Category

但会在任何地方更改网络的名称(因为我只需要在dropbox中更改它)。我相信这是因为network_id是程序上的一个属性,dropbox只是扩展了这一点,但必须有一个方法

您可以使用区域设置:

activerecord:
  attributes:
    dropbox:
      network: Category
将其粘贴到config/locales/en.yml中以更改属性的显示名称。系统将创建一些错误消息:

errors:
  messages:
    dropbox:
      cant_be_blank: Oops!
然后将消息选项添加到模型中:

validates_presence_of :network_id, :name, :message => I18n.t('activerecord.errors.messages.dropbox.cant_be_blank')

可以找到更多信息。

从中,我得到:*网络糟糕!名称Oops!**另外,这难道不意味着所有程序(不仅仅是dropbox子类)都会收到自定义错误消息吗?我更正了目录输入错误。基本上,任何属性都将使用您在那里输入的名称,而不是它们的实际名称(network_id或其他任何名称)。希望这能帮助您整理细节。activerecord::errors::messages::dropbox的嵌套为dropbox模型提供了一组消息。当您想要为另一个模型设置一些时,请使用activerecord::errors::messages::othermodel。将Oops更改为您想要的任何消息。我想我已经找到了这不起作用的原因。网络id是程序上的属性,而不是Dropbox上的属性。我能够改变它的唯一方法是:执行以下操作:
activerecord:attributes:program:network\u id:Category
,但这显然只会改变所有类型节目的network\u id名称,而不仅仅是dropbox。执行
activerecord:attributes:dropbox:network\u id:Category
没有影响。