Rails - 将选项传递给方法

AnA*_*ice 6 ruby-on-rails ruby-on-rails-3

我有一个看起来像这样的帮助方法:

  def html_format(text, width=15, string="<wbr />", email_styling=false)

    if email_styling
       ...... stuff
    else
       ...... stuff
    end
       ...... stuff
  end
Run Code Online (Sandbox Code Playgroud)

我在发送email_styling时遇到问题.以下是我在视图中所做的事情:

<%= html_format(@comment.content, :email_styling => true) %>
Run Code Online (Sandbox Code Playgroud)

我错误地传递了真的吗?谢谢

Pan*_*kos 7

你没有正确传递它.您需要执行以下操作:

<%= html_format(@comment.content, 15, '<wbr />', true) %>
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用选项哈希来传递参数:

def html_format(text, options = {})
  opt = {:width => 15, :string => '<wbr />', :email_styling => false}.merge(options)

  if opt[:email_styling]
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

这样你就可以这样打电话:

<%= html_format(@comment.content, :email_styling => true) %>
Run Code Online (Sandbox Code Playgroud)