Введите атрибут для текстового поля - PullRequest
3 голосов
/ 02 апреля 2010

У меня есть этот код:

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

Чтобы люди могли вводить свою электронную почту на iPhone с помощью клавиатуры электронной почты вместо клавиатуры ASCII. Тем не менее, вывод:

<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 ]

4 голосов
/ 06 июля 2010

На самом деле, в Rails 3 есть помощники форм для этой цели: phone_field и email_field работают так же, как text_field, но устанавливают их атрибуты типа так, как вы ожидаете ..

4 голосов
/ 03 апреля 2010

Невозможно сделать это с текущими помощниками (http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html) "Возвращает тег ввода типа" текст ", предназначенный для доступа к указанному атрибуту ..."

Я бы написал помощника, чтобы ваш код был лучше. Вы можете просто написать что-нибудь с нужным вам 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
...