Поиск…


Вступление

Rails предоставляет помощники вида для создания разметки формы.

замечания

  • Типы ввода даты , включая date , datetime , datetime-local , time , month и week не работают в FireFox.
  • input<type="telephone"> работает только с Safari 8.
  • input<type="email"> не работает в Safari

Создать форму

Вы можете создать форму с form_tag помощника form_tag

<%= form_tag do %>
  Form contents
<% end %>

Это создает следующий HTML-код

<form accept-charset="UTF-8" action="/" method="post">
  <input name="utf8" type="hidden" value="&#x2713;" />
  <input name="authenticity_token" type="hidden" value="J7CBxfHalt49OSHp27hblqK20c9PgwJ108nDHX/8Cts=" />
  Form contents
</form>

Этот тег формы создал hidden поле ввода. Это необходимо, потому что формы не могут быть успешно представлены без него.

Второе поле ввода с именем authenticity_token добавляет защиту от cross-site request forgery .

Создание формы поиска

Чтобы создать форму поиска, введите следующий код

<%= form_tag("/search", method: "get") do %>
  <%= label_tag(:q, "Search for:") %>
  <%= text_field_tag(:q) %>
  <%= submit_tag("Search") %>
<% end %>
  • form_tag : Это помощник по умолчанию для создания формы. Это первый параметр, /search - действие, а второй параметр - метод HTTP. Для форм поиска важно всегда использовать метод get
  • label_tag : Этот помощник создает <label> html <label> .
  • text_field_tag : это создаст элемент ввода с text типа
  • submit_tag : создает элемент ввода с типом submit

Помощники для элементов формы

Флажки

<%= check_box_tag(:pet_dog) %>
<%= label_tag(:pet_dog, "I own a dog") %>
<%= check_box_tag(:pet_cat) %>
<%= label_tag(:pet_cat, "I own a cat") %>

Это создаст следующий html

<input id="pet_dog" name="pet_dog" type="checkbox" value="1" />
<label for="pet_dog">I own a dog</label>
<input id="pet_cat" name="pet_cat" type="checkbox" value="1" />
<label for="pet_cat">I own a cat</label>

Радио-кнопки

<%= radio_button_tag(:age, "child") %>
<%= label_tag(:age_child, "I am younger than 18") %>
<%= radio_button_tag(:age, "adult") %>
<%= label_tag(:age_adult, "I'm over 18") %>

Это генерирует следующий HTML-код

<input id="age_child" name="age" type="radio" value="child" />
<label for="age_child">I am younger than 18</label>
<input id="age_adult" name="age" type="radio" value="adult" />
<label for="age_adult">I'm over 18</label>

Текстовая область

Чтобы создать более крупное текстовое поле, рекомендуется использовать text_area_tag

<%= text_area_tag(:message, "This is a longer text field", size: "25x6") %>

Это создаст следующий HTML-код

<textarea id="message" name="message" cols="25" rows="6">This is a longer text field</textarea>

Числовое поле

Это создаст элемент input<type="number">

<%= number_field :product, :rating %>

Чтобы указать диапазон значений, мы можем использовать опцию in:

<%= number_field :product, :rating, in: 1..10 %>

Поле пароля

Иногда вы хотите, чтобы символы, введенные пользователем, были замаскированы. Это создаст <input type="password">

<%= password_field_tag(:password) %>

Поле электронной почты

Это создаст <input type="email">

<%= email_field(:user, :email) %>

Телефонное поле

Это создаст <input type="tel"> .

<%= telephone_field :user, :phone %>

Помощники по дате

  • input[type="date"]

    <%= date_field(:user, :reservation) %>
    
  • input[type="week"]

     <%= week_field(:user, :reservation) %>
    
  • input[type="year"]

     <%= year_field(:user, :reservation) %>
    
  • input[type="time"]

     <%= time_field(:user, :check_in) %>
    

Падать

Стандартный пример: @models = Model.all select_tag "models", options_from_collection_for_select (@models, "id", "name"), {}

Это создаст следующий HTML-код: David

Последним аргументом являются опции, которые принимают следующее: {multiple: false, disabled: false, include_blank: false, prompt: false}

Дополнительные примеры можно найти: http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow