代码之家  ›  专栏  ›  技术社区  ›  Jamie Wong

部分快闪消息(Rails 3)

  •  25
  • Jamie Wong  · 技术社区  · 14 年前

    我有一部分, _flash.html.haml

    - flash.each do |type, value|
      .flash{ :class => type.to_s }
        = value 
    

    我正在用

    =render :partial => "flash"

    =render :partial => "flash", :locals => {:flash => flash}

    它起作用了。

    为什么部分用户不能访问flash消息?

    4 回复  |  直到 14 年前
        1
  •  24
  •   oliver    14 年前

    在Rails的早期版本(rails2)中,默认的局部变量将查找与父级中partial同名的实例变量。

    给出你的例子,因为部分 _flash

    这意味着您必须始终显式地将所有实例变量作为 locals ,偶数 flash ,正如您在后一个示例中所写。

    <%= render :partial => "flash", :locals => {:flash => flash} %>

    闪光 闪光 是一个实例变量。

        2
  •  22
  •   tothemario    12 年前

    因为partial名为“\u flash”,所以应该使用:object local在partial中指定变量flash。

    更改您的部分名称,您将能够在内部使用flash,例如:

    = render "show_flash_names"
    
        3
  •  5
  •   John    12 年前

    每个partial都在一个上下文中呈现,该上下文包含一个隐式局部变量,该变量的名称是partial的名称(不包括前导下划线)。所以 _flash.html.haml 部分遗嘱 always 有一个 flash 局部阴影 ActionView::Base#flash :locals => {:flash => flash} :object => flash ,本地的值是 nil .

    render .

    I'd like to see it changed

        4
  •  4
  •   YWCA Hello    12 年前

    这也将达到您想要的结果:

    <%= render partial: "flash", object: flash %>

    这个 flash admin/shared/flash 部分as 闪光 ,因为部分 . 你可以进入 闪光