将局部变量注入rails

时间:2016-12-14 00:17:27

标签: html ruby-on-rails ruby ruby-on-rails-4 erb

我希望下面的部分内容能够通过本地注入classy类来获取它,但是我一直在为优雅提供未定义的方法。

//视图

<%= render layout: "layouts/partial", locals: {className: "classy"} do %>
...
<% end>

//局部

<div class="regular-div <%=className if className?%>"></div>

1 个答案:

答案 0 :(得分:1)

要检查是否设置了局部变量,请使用local_assigns.has_key?(:some_key)local_assigns[:some_key]安全地访问本地变量。

处理构建类列表的常见任务的一种很好的方法是:

module ApplicationHelper
  # Takes an array or list of classes and returns a string
  # Example:
  #  class_list('a', 'b', nil, 'c')
  #  => "a b"
  #  class_list(['a', 'b', nil, 'c'])
  #  => "a b c"
  def class_list(*classes)
    [*classes].flatten.compact.join(' ') 
  end
end

然后你可以这样做:

<div class="<%= class_list('regular-div', local_assigns[:className]) %>"></div>