如何更改rails上的更改错误消息

时间:2017-04-04 17:57:42

标签: ruby-on-rails

我的观点:

<div class="form-group">
          <% if @product.errors.details[:amount].any? %>
            <div class="has-error">
              <%= f.label "#{t('product.shineer_irsen')}", class: 'control-label' %>
              <%= f.number_field :amount, value: 0, min: 0, class: "form-control" %>
            </div>
          <% else %>            
            <%= f.label "#{t('product.shineer_irsen')}", class: 'control-label' %>
            <%= f.number_field :amount, value: 0, min: 0, class: "form-control" %>
          <% end %>
        </div>

我想在输入字段中验证金额,我想将其错误消息更改为我的母语。

现在,错误消息是 error message

如何改变?请帮帮我。

产品型号:

class Product < ApplicationRecord
    belongs_to :item
    belongs_to :user
    belongs_to :branch
    validates :amount, numericality: {greater_than_or_equal_to: 0}

    def item_name
        item.try(:name)
    end

    def item_name=(query)
        self.item = Item.find_by_name(query) if query.present?
    end

    def amount=(new_value)
        if read_attribute(:amount)
            @old_amount = read_attribute(:amount)
            write_attribute(:amount, new_value.to_i + @old_amount)
        else 
            write_attribute(:amount, new_value.to_i)
        end 
    end
end

本地/ mn.yml的某些行

activerecord:
    attributes:
     ...
    errors:
      models:
        subcategory:
          attributes:
            category_id:
              invalid: "ahaha"
              blank: "хоосон байж болохгүй"
            category:
              blank: "сонгоогүй байна."
        product:
          attributes:
            amount:
              greater_than_or_equal_to: 'Оруулах утга 0-ээс их байх ёстой.'

2 个答案:

答案 0 :(得分:1)

我想你要翻译&#34; Value必须大于或等于0&#34;如果是这样的话,你需要做的就是在语言环境文件上创建一个翻译。西班牙语将是这样的:

# config/locales/es.yml
es:
  activerecord:
    errors:
      models:
        product:
          attributes:
            amount:
              greater_than_or_equal_to: 'What ever you want to say'

根据您的母语,您必须创建文件并定义消息,我认为您已经这样做了,因为您正在使用翻译:

#{t('product.shineer_irsen')}

您可以在此处找到更多信息:

http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models

答案 1 :(得分:0)

您可以自定义从模型验证中获得的错误消息,在这种情况下,您需要添加到模型中:

validates :age, numericality: {greater_than_or_equal_to: 0, message: 'Este campo tiene que ser positivo' }

有了这个,你不需要改变视图。