2012-12-30 66 views
0

我有一個可重複使用的字段模板,稱爲_field.html.haml,看起來像(在HAML):如何根據Rails中的字段名稱自動生成佔位符文本?

= f.label field 
= f.send(field_type, field, :class => field_type) 

這樣做的好處是,它可以從父表單模板被調用,並提供可重用性。這讓我可以根據字段類型動態地呈現表單字段。主叫模板的樣子:

= form_for(@model) do |f| 
    = render :partial => 'field', :locals => { :field => :first_name, :field_type => :text_field } 
    = render :partial => 'field', :locals => { :field => :last_name, :field_type => :text_field } 

基於標籤文本此_field.html.haml模板我怎麼會添加自動生成的佔位符文本的?也許正確的問題是,標籤hdlper用於將字段名稱轉換爲大寫英文短語的代碼是什麼?

I.e.代碼如下所示:

= f.send(field_type, field, :class => field_type, :placeholder => #INSERT CODE HERE to get friendly placeholder text) 
+0

你爲什麼不通過'F'作爲一個局部變量? – apneadiving

+0

+您應該簡單地創建自己的表單生成器,請參閱http://railscasts.com/episodes/311-form-b​​uilders – apneadiving

+0

apneadiving,更新爲僅將f用作局部變量,但這並不能解決問題。 –

回答

2

label_tag方法使用`字符串#人性化」,使其看起來更漂亮(http://api.rubyonrails.org/classes/String.html#method-i-humanize)。因此,在您例如,你可以這樣做:

= f.send(field_type, field, :class => field_type, :placeholder => field.to_s.humanize) 

正如先前在評論中提到的,你應該看看可用的形式建設者,他們的抽象很多與好人形式相關的疼痛有些鏈接是:

相關問題