我有这段代码:
<%= 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?感谢
答案 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一样工作,但是按照你的预期设置它们的类型属性。