Ruby on rails Rails-将选项传递到接受块的助手方法中?

Ruby on rails Rails-将选项传递到接受块的助手方法中?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个创建邮件模板行(html)的助手。我希望能够将样式传递到行(可选),如背景色 module MailHelper def module_row(&block) h << "<table border='0' cellpadding='0' cellspacing='0' width='100%'>" # more table html here h << capture(&block) # more

我有一个创建邮件模板行(html)的助手。我希望能够将样式传递到行(可选),如背景色

module MailHelper
  def module_row(&block)
    h << "<table border='0' cellpadding='0' cellspacing='0' width='100%'>"
    # more table html here
    h << capture(&block)
    # more table html here
    h << "</table>"
    raw h
  end
end
模块MailHelper
def模块_行(&block)
你当然可以

module MailHelper
  def module_row(options={}, &block)
    ...
    if options[:foo]
      do_foo_stuff
    end
  end
end

<% module_row(foo: true) do |x| %>
  ...
<% end %>
你当然可以

module MailHelper
  def module_row(options={}, &block)
    ...
    if options[:foo]
      do_foo_stuff
    end
  end
end

<% module_row(foo: true) do |x| %>
  ...
<% end %>

您可以将选项作为散列传递,如:

module MailHelper
  def module_row(**opts, &block)
    bgcolor = opts[:bgcolor] || '#FFFFFF'
    ...
    h << "<table border='0' cellpadding='0' cellspacing='0' width='100%'>"
    # more table html here
    h << capture(&block)
    # more table html here
    h << "</table>"
    raw h
  end
end
或:


您可以将选项作为散列传递,如:

module MailHelper
  def module_row(**opts, &block)
    bgcolor = opts[:bgcolor] || '#FFFFFF'
    ...
    h << "<table border='0' cellpadding='0' cellspacing='0' width='100%'>"
    # more table html here
    h << capture(&block)
    # more table html here
    h << "</table>"
    raw h
  end
end
或:


而我生活在过去,不知道双重人格。我还没有玩过关键字参数。在这里传递splat参数毫无意义:
def module_row(options={},&block)
@mudasobwa您是对的。我已经离开这场比赛一年了,用stackoverflow把它带回来。我生活在过去,不知道doublesplat。我还没有玩过关键字参数。在这里传递splat参数毫无意义:
def module_row(options={},&block)
@mudasobwa您是对的。我已经离开游戏一年了,用stackoverflow把它全部带回来。
module_row(bgcolor: '#AAAAAA') { block content }