При использовании simple_form с реформой используется неверный тип
Учитывая следующую форму
class EntryForm < Reform::Form
property :composition
property :native_language_version
validates :composition, presence: true
end
и следующая схема
create_table "entries", force: :cascade do |t|
t.text "composition"
t.text "native_language_version"
t.integer "language_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
и следующий код контроллера
class EntriesController < ApplicationController
def new
@entry = EntryForm.new(Entry.new)
# @entry = Entry.new
end
end
и следующий код для simple_form
= simple_form_for(@entry) do |f|
= f.input :composition
= f.input :native_language_version
= f.submit
вместо того, чтобы получить textarea
за composition
а также native_language_version
, Я получил
<input class="string required form-control" type="text" name="entry[composition]" id="entry_composition">
переход на использование @entry = Entry.new
вместо этого дает мне элемент textarea, чего я и хочу:
<textarea class="text optional form-control" name="entry[composition]" id="entry_composition"></textarea>
Я пытался добавить type: :text
к :composition
недвижимость в EntryForm
, но это не помогло.
Я также знаю, что вместо того, чтобы использовать f.input
Я мог бы указать фактический тип ввода, но это хак.
Как мне передать тот факт, что composition
это text
а не string
через EntryForm
в simple_form?
Я использую Rails 4.2.5.1, simple_form 3.2.1 и реформу 2.1.0.
1 ответ
Ты не можешь Когда модель обернута Reform::Form
Вы должны явно указать SimpleForm, что вы хотите текстовую область.
= f.input :composition, as: :text_area
Причина в том, что при определении типа базы данных столбцов SimpleForm опирается на часть интерфейса ActiveRecord, которую не предоставляет Reform::Form.