给出以下表格
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。
答案 0 :(得分:2)
你不能。当模型被Reform::Form
包裹时,你必须明确告诉SimpleForm你想要一个textarea。
= f.input :composition, as: :text_area
原因是在确定Reform :: Form不提供的列数据库类型SimpleForm relies on a part of ActiveRecord interface时。