【问题标题】:Ruby/Rails: Appending to a proc?Ruby/Rails:附加到 proc?
【发布时间】:2012-03-27 12:27:14
【问题描述】:

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

问题是,如何在 proc 参数中添加一些内容?我调用的方法是:

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

结束

如果有人可以替换那个“# ???”与解决方案一致(或者如果我以错误的方式解决这个问题,请提供替代方法),我将非常感激。

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:
    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

    【讨论】:

      【解决方案2】:
      - 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多