首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Rails表单干燥这个<div>?

如何使用Rails表单干燥这个<div>?
EN

Stack Overflow用户
提问于 2018-02-21 20:10:42
回答 1查看 71关注 0票数 0

我理解使用Rails表单帮助器,我可以将类、占位符、类型等传递到Rails中,而不是编写

代码语言:javascript
复制
<input id="name" name="name" type: "text" pattern="" value="Kanye West"/>
<label class="mdl-textfield__label" for="name">Enter Name</label>

我能做到:

代码语言:javascript
复制
<%= 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框架,它最终会变成这样.

代码语言:javascript
复制
<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部分。请让我知道如何改进这个混乱和,或者你看到的任何可以用我的代码来改进的东西:)

EN

回答 1

Stack Overflow用户

发布于 2018-02-21 20:17:49

您可以创建自己的FormBuilder,并创建包含超出需要的包装类的自定义控件。

例如,如果要将文本字段包装在特定的div

代码语言:javascript
复制
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
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48914610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档