【问题标题】:Inject local variables into rails partial将局部变量注入 Rails 部分
【发布时间】:2016-12-14 00:17:27
【问题描述】:

我希望下面的部分从通过本地注入的classy 类中获取,但我不断得到未定义的classy 方法。

//查看

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

//部分

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

【问题讨论】:

  • 什么意思?您正在传递局部变量 className 并引用 className。你确定这不仅仅是一个错字或草率的错误吗?
  • className 没有以“优雅”的身份进入部分。我希望我的 div 获得“经典”类
  • 应该是&lt;%= className if local_assigns.has_key?(:className) %&gt;。因为classNameclassName? 不一样。 local_assigns.has_key?(:className) 是一种安全检查是否设置了局部变量的方法。

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


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

【讨论】:

    猜你喜欢
    • 2019-10-24
    • 1970-01-01
    • 2016-01-10
    • 2016-08-23
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多