2013-06-11 60 views
1

使用的simple_form 3.0.0.rc新/未變化的安裝上rails 4.0.0.rc1,這個視圖代碼簡單的表單#input_field方法

<%= simple_form_for @order do |f| %> 
    <%= f.input_field :email %> 
<%= end %> 

產生這樣的輸出

<input class="string email optional" id="order_email" maxlength="255" name="order[email]" size="255" type="text" /> 

,但我之前預計的輸出不包括maxlength和將type設置爲'email',很像#input方法:

<input class="string email optional" id="order_email" name="order[email]" type="email" /> 

我期待來自一個事實,即simple_form.rb包括以下默認值:

b.use :html5 
b.optional :maxlength 

什麼我需要做的,使從#input_field默認input屬性一樣#input

+0

嘗試'<%= f.input:電子郵件%>' –

+0

謝謝,但我特別不希望使用#INPUT,這就是爲什麼我試圖使#input_field。 – Mike

回答

2

輸入字段輔助方法,將帶你傳遞給它的散列在第二個參數,並把它們的信息HTML屬性。看看下面的代碼,應該做的伎倆:

<%= simple_form_for @order do |f| %> 
    <%= f.input_field :email, :type => :email, :maxlength => nil %> 
<% end %> 
0

我認爲它與你的數據庫字段有關......我認爲你已經將數據庫字段設置爲字符串,最大長度一般爲255 ..這可能是它自動添加255的原因嗎?

+0

它符合#input的預期,僅適用於#input_field。你可以在255上正確的,但爲什麼不是類型被設置爲電子郵件?謝謝。 – Mike

1

根據docsinput_field方法將所有選項取爲input_html選項,但:as, :collection, :label_method, :value_method鍵除外。我嘗試添加:as => :email但無濟於事。但是您可以使用:type => :email在呈現的html中獲取type="email"。根據方法的來源,它也使用一些默認值。

所以對於獲取電子郵件字段:

<%= simple_form_for @order do |f| %> 
    <%= f.input_field :email, :type => :email %> 
<% end %>