Foundation 5和SimpleForm的工具提示



我将SimpleForm与Zurb Foundation 5一起使用(设置如中所述https://github.com/plataformatec/simple_form#zurb-基础-5)。

在我的视图中,我可以显示表单字段的Foundation工具提示(例如"键入您的姓名"),方法是:

= f.input :name, input_html: {title: 'Type your name.', data: {tooltip: ''}}

这很好,但这是太多的语法开销。如何配置SimpleForm,以便在视图中使用以下短语法来显示Foundation工具提示:

= f.input :name, hint: 'Type your name.'

(我已经读过了https://stackoverflow.com/a/28461799/4096216但它没有帮助,因为我不想要自定义工具提示,但我更喜欢使用Foundation本身提供的工具提示,请参阅http://foundation.zurb.com/docs/components/tooltips.html)。

作为一种变通方法,我编写了一个视图助手

def hint(text)
  {input_html: {title: text, data: {tooltip: ''}}}
end

这允许我显示一个工具提示:

= f.input :name, hint('Type your name.')

尽管如此,如果我能写下:,感觉会更好/更干净

= f.input :name, hint: 'Type your name.'

欢迎提出任何建议!:)

我对它进行了研究,最终实现了一个自定义组件,如SimpleForm wiki中简要描述的那样。

config/initializers/simple_form_foundation.rb中,我添加了

module SimpleForm
  module Components
    module Tooltips
      def tooltip(wrapper_options=nil)
        @tooltip ||= begin
          hint = options[:hint]
          text =
            if hint.is_a?(String)
              html_escape(hint)
            else
              translate_from_namespace(:hints)
            end
          if text
            <<-HTML
              <span data-tooltip
                aria-haspopup='true'
                class='has-tip'
                data-disable-hover='false'
                tabindex=1
                title='#{text}'>?</span>
            HTML
          end
        end
      end
      def has_tooltip?
        options[:hint] != false && tooltip.present?
      end
    end
  end
end
SimpleForm::Inputs::Base.send(:include, SimpleForm::Components::Tooltips)

然后我可以在同一文件的设置部分中使用(为了简洁起见,省略了一些代码):

SimpleForm.setup do |config|
  ...
  config.wrappers :vertical_form, ... do |b|
    ...
    b.use :tooltip
  end
...

附言:我没有费心使用SimpleForm的构建器来返回除了一块HTML之外的任何东西,这给了我一个机会来获取它并向我展示如何做得很好。

PPS:我的例子是基于最近的Foundation6。

相关内容

  • 没有找到相关文章

最新更新