Добавить вспомогательный метод формы - PullRequest
5 голосов
/ 24 января 2010

Я сделал хороший редактор в jQuery, и я хочу добавить его в качестве вспомогательного метода формы.

как мне создать новый вспомогательный метод формы?

В идеале я хотел бы иметь возможность звонить:

f.nice_editor :field

Ответы [ 3 ]

9 голосов
/ 02 декабря 2012

Часть вопроса: куда вы положили код nice_editor? Я не думаю, что это хорошая идея, чтобы напрямую редактировать класс ActionView :: Helpers :: FormBuilder в вашей установке. Вместо этого поместите ваш код в один из файлов в app / helpers. Есть несколько способов добавить методы расширения в FormBuilder.

Например, предположим, у вас есть вспомогательный файл items_helper.rb:

module ItemsHelper
    # this is one way to define new instance methods
    ActionView::Helpers::FormBuilder.class_eval do
        def nice_editor(conf,*opts)
            ...
        end
    end
end

Также см. Это хорошее обсуждение , в котором показано, как использовать self.included () для расширения FormBuilder.

6 голосов
/ 24 января 2010

Объект, выданный form_for, является экземпляром ActionView::Helpers::FormBuilder. Поэтому все, что вам нужно сделать, это добавить туда методы экземпляра.

class ActionView::Helpers::FormBuilder
  def custom_field(...)
    ...
  end
end
1 голос
/ 24 января 2010

после некоторых исследований я обнаружил, что это работает:

class ActionView::Helpers::FormBuilder
    def nice_editor(conf)
         #stuff to draw the editor
    end
end

"conf" будет передавать все опции символов из представления. он отлично работает с F.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...