2011-10-17 18 views
9

Giả sử ai có en.yml sauLàm thế nào để chuyển một biến nội suy i18n bên trong trình trợ giúp nhãn biểu mẫu?

#en.yml 
en: 
    activerecord: 
    books: 
     price: "Price in %{currency}" 

Sau đó, người ta có thể làm như sau trong một cái nhìn

<%= t :price, :scope => "activerecord.attributes.book", :currency => "USD"%> 

và nó sẽ in "Giá tính bằng USD".

Nhưng tôi không thể tìm ra cách để vượt qua tiền tệ khi bản dịch này là trong một hình thức

# views/books/edit.html 
f.label :price 

hiểu ném một i18n :: MissingInterpolationArgument, nhưng tôi không thể tìm ra những gì cú pháp có thể để vượt qua đối số còn thiếu

# views/books/edit.html 
f.label :price, :currency => "USD" 

không hoạt động.

Trả lời

10

tôi sẽ cố gắng:

<%= f.label I18n.t(:price, :scope => "activerecord.attribute.book", :currency => "USD") %> 
+0

Điều đó không thực sự làm việc. Nếu bản dịch cho giá là "Giá bằng USD" thì thẻ nhãn của bạn sẽ trông giống như , không phải là HTML hợp lệ. – cailinanne

+0

tôi thấy, sau đó điều này: <% = f.label: price, I18n.t (: price,: scope => "activerecord.books.price",: currency => "USD")%> nên tốt hơn. Xin lỗi tôi không thể chạy và kiểm tra nó ngay bây giờ .. @ công việc không có đường ray availble ;-( – Cygnusx1

+0

Phải, đó là những gì tôi bắt đầu với (xem câu hỏi ban đầu) .Tuy nhiên, sau khi điều tra nhiều, tôi nghĩ rằng ngoại lệ tôi nhìn thấy là thực sự được thông qua bởi các mô-đun client_side_validations.Tôi đoán rằng đề nghị thứ hai của bạn trong bình luận của bạn ở đây sẽ làm việc tốt nếu mô-đun client_side_validations không tham gia. – cailinanne

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