text_field的类型属性

时间:2010-04-02 13:00:26

标签: html ruby-on-rails input types textfield

我有这段代码:

<%= f.text_field :email, :type => "email", :placeholder => "john@example.com" %>

因此,人们可以使用电子邮件键盘而不是ASCII键盘在iPhone上输入电子邮件。但是,输出是:

<input id="user_email" name="user[email]" placeholder="john@example.com" size="30" type="text" />

应该是:

<input id="user_email" name="user[email]" placeholder="john@example.com" size="30" type="email" />

我也希望这种类型为tel类型,因此人们可以获得电话号码键盘。

有没有办法强制Rails使用email类型而不是text,还是我必须直接使用HTML?感谢

2 个答案:

答案 0 :(得分:4)

使用当前帮助程序无法执行此操作(http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html)“返回为访问指定属性而定制的”text“类型的输入标记...”

我会写一个帮手来保持你的代码更好。你可以用你需要的HTML和选项写一些东西,或者你可以添加一些东西来使用FormBuilder,就像下面的代码片段一样。

module ActionView
  module Helpers
    class FormBuilder
      def tel_field(method, options = {})
        InstanceTag.new(@object_name, method, self, options.delete(:object)).to_input_field_tag("tel", options)
      end
    end
  end
end

答案 1 :(得分:4)

实际上,在Rails 3中有为此目的的表单助手: telephone_field和email_field就像text_field一样工作,但是按照你的预期设置它们的类型属性。