2015-03-25 2 views
0

Я использую SimpleForm с Zurb Foundation 5 (настройка, как описано в https://github.com/plataformatec/simple_form#zurb-foundation-5).Подсказки с основанием 5 и SimpleForm

В моих взглядах я могу показать всплывающую подсказку 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, но это не помогает, потому что я не» t нужна специальная подсказка, но я бы предпочел использовать всплывающую подсказку, предоставленную самим Фондом, см. 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.' 

Любые предложения приветствуются! :)

ответ

0

Я заглянул в него и в итоге ввел Пользовательский компонент, как кратко описано в 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 
... 

PS: Я Жду» Не пытайтесь использовать конструктор SimpleForm, чтобы возвращать что-либо, кроме капли HTML, оставляя кому-то возможность забрать его и показать мне, как это красиво.

PPS: Мой пример основан на более позднем основании 6.

Смежные вопросы