2011-10-06 30 views
6

Tôi có một đoạn mã sau: Thông điệpRuby on Rails: Cách tùy chỉnh thông báo lỗi xác thực?

validates :name, :presence => true 

Lỗi sản xuất là "Tên không thể để trống" Thay vì sử dụng các tên thuộc tính thực tế (trong trường hợp "tên" này) Tôi muốn nhắn hiển thị như "Tên đăng ký không được để trống". Làm cách nào để ghi đè thông báo mặc định về xác thực? Tôi đã thử thêm: tin nhắn nhưng không hoạt động ...

Cảm ơn!

Trả lời

13

Trong file en.yml xác định phím tùy chỉnh như:

activerecord: 
    attributes: 
    model_name: 
     attribute_name1: key1 
     attribute_name2: key2 
       ...... 

này sẽ tự động được sử dụng khi các lỗi được tạo.

tham khảo: http://edgeguides.rubyonrails.org/i18n.html#translations-for-active-record-models (5.1 Dịch cho Active Record Models)

+1

Chưa bao giờ nghe nói về điều đó. Wow, đã học được điều gì đó mới mẻ - câu trả lời hay! :) –

+0

@ ream88 - giây thứ hai. câu trả lời rất tốt đẹp, chắc chắn sẽ sử dụng điều này. Trước đây tôi đã sử dụng một viên ngọc, hơn một vài tháng trước, cho các thông báo lỗi tùy chỉnh. Đá quý được lưu trữ tại https://github.com/nwise/custom_error_message. – prasvin

+0

Đối với người đọc trong tương lai, trong trường hợp không rõ ràng, tệp 'en.yml' sẽ tồn tại trong' config/locales'. – GMA

7

này sẽ làm các trick:

validates :name, presence: { message: "Registration name can't be blank" } 

hoặc phiên bản cú pháp tên lửa băm cũ:

validates :name, :presence => { :message => "Registration name can't be blank" } 
+0

Nhưng tôi vẫn thấy nhận xét là "Tên đăng ký tên không được để trống" Tôi muốn loại bỏ từ "Tên" khỏi thư ... – Mayumi

+0

Nhưng sự cố này liên quan đến chế độ xem của bạn. –

+0

Ý của bạn là gì? – Mayumi

6

của nó muộn một chút bây giờ (sau khoảng 35 ngày) để trả lời câu này. Vì vậy, xin lỗi vì điều này. Nhưng chỉ muốn chia sẻ rằng tôi đã sử dụng một viên ngọc, hơn một vài tháng trước, cho các thông báo lỗi tùy chỉnh.

Plugin này cho phép bạn bỏ qua tên thuộc tính cho các thư cụ thể. Tất cả những gì bạn phải làm là bắt đầu tin nhắn với ký tự ‘^’.

Tôi vừa chọn nó tại https://github.com/nwise/custom_error_message & nó chưa được cập nhật kể từ tháng ba. Vì vậy, tôi có thể sử dụng nó vào đúng thời điểm.

ps: Câu trả lời của bạn cho việc xác định khóa tùy chỉnh trong tệp yml là phù hợp hơn.

Các vấn đề liên quan