Ruby / Rails: присоединиться к процессу? - PullRequest
2 голосов
/ 27 марта 2012

В Rails есть метод form_for, который принимает & proc, содержащий содержимое, присутствующее внутри сгенерированного тега формы.Например, в HAML:

= form_for @my_model do |f|
  = f.label :demo_field
  = f.text_field :demo_field

я бы очень хотел добавить кое-что к этому блоку & proc, чтобы форма отображалась как

= form_for @my_model do |f|
   %h1 Demo Of Breaking Into A Proc
   = f.label :demo_field
   = f.text_Field :demo_field

Вопрос в том, как мне поступитьо добавлении чего-либо к аргументу процедуры?Метод, который я вызываю:

module ActionView::Helpers::FormHelper
  alias_method :original_form_for, :form_for



   def form_for(record, options = {}, &proc)
     # Prepend to the proc block here
     # ???

     original_form_for(record, options, &proc)
   end

end

Если кто-нибудь может заменить это "# ???"согласиться с решением (или предложить альтернативный подход, если я поступаю неправильно), я был бы очень признателен.

Ответы [ 2 ]

2 голосов
/ 27 марта 2012
def form_for(record, options = {}, &proc)
    new_proc = proc do |*args, &block|
      "some more html" + proc.call(*args, &block)
    end
  original_form_for(record, options, &new_proc)
end

Вы не можете изменить Proc.

0 голосов
/ 27 марта 2012
- my_form = lambda do |*args, &proc|
  %h2 My form header
  - form_for *args,  &proc

- my_form.call(:model_name) do |f|
  = f.text_field :column_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...