2014-09-05 58 views
4

我希望Rails能夠像使用表單標籤一樣自動轉換佔位符文本。我怎樣才能做到這一點?如何在Rails 4中轉換佔位符文本?

表單標籤都是這樣自動翻譯:

= f.text_field :first_name 

此助手使用區域設置文件:

en: 
    active_model: 
    models: 
     user: 
     attributes: 
      first_name: Your name 

,輸出這個HTML

<label for="first_name">Your name</label> 

我怎樣才能使它如此佔位符被翻譯?我是否需要輸入完整的示波器:

= f.text_field :first_name, 
    placeholder: t('.first_name', scope: 'active_model.models.user.attributes.first_name') 

是否有更簡單的方法?

回答

10

如果使用Rails 4.2,您可以設置佔位符屬性設置爲true:

= f.text_field :first_name, placeholder: true 

,並指定區域文件中像這樣的佔位符文本:

en: 
    helpers: 
    placeholder: 
     user: 
     first_name: "Your name" 
+0

它需要'accepts_nested_attributes_for:model'嵌套模式。 – hlcs 2017-11-08 06:46:32

0

您可以在http://rubydoc.info/docs/rails/ActionView/Helpers/Tags/Label上查看渲染源,以瞭解Rails如何執行此操作。它可能沒有比你有的好多了,但是如果你有很多事情要做的話,你可以輕掃一下Rail的一些邏輯並把它放在助手中。或者,您可以考慮使用自定義表單構建器來刪除整個表單中的一些重複內容,而不僅僅是佔位符。

0

使用Rails> = 4.2,您可以設置佔位符屬性爲true

= f.text_field :first_name, placeholder: true

和您的本地文件(例如en.yml):

ru: 
    activerecord: 
    attributes: 
     user: 
     first_name: Your name 

否則(滑軌> = 3.0),我想你可以寫這樣的事情:

= f.text_field :attr, 
    placeholder: "#{I18n.t 'activerecord.attributes.user.first_name'}" 
+0

這個答案出現在低質量的審查隊列中,大概是因爲你沒有提供任何代碼的解釋。如果此代碼回答此問題,請考慮添加一些文字,說明答案中的代碼。這樣,你就更有可能獲得更多讚揚 - 並幫助提問者學習新東西。 – lmo 2016-08-27 16:33:05