1

使用新的/未更改的simple_form 3.0.0.rcon安装rails 4.0.0.rc1,此视图代码

<%= 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为“电子邮件”,就像该#input方法一样:

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

我的期望来自于simple_form.rb包含以下默认值的事实:

b.use :html5
b.optional :maxlength

我需要做什么才能使input属性从#input_field默认变为相同#input

4

3 回答 3

3

输入字段辅助方法将获取您在第二个参数中传递给它的哈希并将它们转换为 info html 属性。看看下面的代码,应该可以解决问题:

<%= simple_form_for @order do |f| %>
    <%= f.input_field :email, :type => :email, :maxlength => nil %>
<% end %>
于 2013-06-11T18:28:58.980 回答
2

根据docs input_field方法,input_html:as, :collection, :label_method, :value_method键外,所有选项都作为选项。我尝试添加:as => :email但无济于事。但是你可以:type => :email用来进入type="email"呈现的 html。并且根据方法的来源,它也使用一些默认值。

因此,对于获取电子邮件字段:

<%= simple_form_for @order do |f| %>
  <%= f.input_field :email, :type => :email %>
<% end %>
于 2013-06-11T16:36:00.510 回答
0

我认为它与您的数据库字段有关...我认为您已将数据库字段设置为字符串,通常最大长度为 255。这可能是它自动添加 255 的原因吗?

于 2013-06-11T16:18:19.283 回答