5

Bazı alanları çevirmek için DRY yolu nedir? Benim RESTful görünümlerindeRaylar I18n: çeviri çağrılarını kısaltın (en azından görünümlerde)

, bir gösteri görünümde bu gibi bazı tekrarlayan parçacıkları vardır:

... 
<dt><%= t("activerecord.attributes.user.firstname") %></dt> 
<dd><%= @user.firstname %></dd> 
... 

Şimdi, yerine tekrar tekrar t("activerecord.attributes.user.attr_name") yazma, ben (sadece t(:attr_name) yazmak istiyorum form görünümlerindeki f.label :firstname benzeri).

Temel olarak, bu sorun bir sorun olmamalıdır (en azından RESTful görünümler için), çünkü I18n modülü model adını tahmin etmek ve doğru çeviri dizesini tahmin etmek için controller yöntemini sorgulayabilir.

Soruma Sahip: Bu yaklaşımla ilgili pratik deneyime sahip olan var mı? Bunun için bir RubyGem bile olabilir mi? Ya da: orada tuzaklar var, düşünmedim mi?

cevap

2

Bunu yapmanın tavsiye edilen yolu kısmi içine bu koymak için (örneğin app/views/user/_form.html.erb hatta app/views/user/_user.html.erb) ve sonra bu şekilde lider nokta ile adından önce:

<dt><%= t(".firstname") %></dt> 
<dd><%= user.firstname %></dd> 

fazla bilgi: examples (dan Agile Web Development with Rails); Rails documentation

+3

Kısmi kullanımın sessiz olduğu görülüyor, ancak aynı içeriğin aynı şekilde gösterilmesi halinde yalnızca DRY olacağını düşünüyorum. Dokümantasyonda ayrıca "t ('. Foo')" ifadesinin insanlar/index.html.erb dosyasından çağrılması aslında t ('people.index.foo') 'olarak adlandırılıyor. Dağınıklığı yerel dosyalarında saklamak istemiyorum ... – DMKE

İlgili konular