我理解使用Rails表单帮助器,我可以将类、占位符、类型等传递到Rails中,而不是编写
<input id="name" name="name" type: "text" pattern="" value="Kanye West"/>
<label class="mdl-textfield__label" for="name">Enter Name</label>我能做到:
<%= f.text_field :name, class: 'mdl-textfield__input', type: 'text', pattern: '-?[0-9]*(\.[0-9]+)?', id: 'name', value: 'Kanye West' %>
<label class="mdl-textfield__label" for="name">Enter Name</label>但是它变得毫无意义,因为如果我使用一个CSS框架,它最终会变成这样.
<div class="mdl-cell mdl-cell--6-col mdl-cell--4-col-tablet hide-dis">
<div class="mdl-textfield advanced-input mdl-js-textfield mdl-textfield--expandable">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<%= f.text_field :name, class: 'mdl-textfield__input', type: 'text', pattern: '-?[0-9]*(\.[0-9]+)?', id: 'name', value: 'Kanye West' %>
<label class="mdl-textfield__label" for="name">Enter Name</label>
</div>
</div>
</div>你可以想象,当你有10个表单元素时,它会变得多么丑陋,对吧。我可以尝试对其进行分区,但我不知道如何传递f.textfield部分。请让我知道如何改进这个混乱和,或者你看到的任何可以用我的代码来改进的东西:)
发布于 2018-02-21 20:17:49
您可以创建自己的FormBuilder,并创建包含超出需要的包装类的自定义控件。
例如,如果要将文本字段包装在特定的div中
class CustomFormBuilder < ActionView::Helpers::FormBuilder
def custom_text_field(method, tag_value, options = {})
@template.content_tag(:div,
@template.text_field(
@object_name, method, tag_value, objectify_options(options)
),
class: 'mdl-textfield mdl-js-textfield'
)
end
endhttps://stackoverflow.com/questions/48914610
复制相似问题