HAML partials - partial不识别我在控制器中查询的对象

时间:2012-04-24 21:15:05

标签: ruby-on-rails ruby haml partials

我有这个控制器:

  def index
    @disclosures = Disclosure.where(:user_id => current_user.id)

    respond_to do |format|
      format.html{}
      format.js{}
    end

  end

并且在StackOverflow的优秀人员的帮助下,我现在可以让我的HAML指向这样的部分:

  = render :partial => "/influencers/disclosures/shared/list"

但是这部分抛出和异常:

-if disclosures.empty?
  .alert.alert-info
    %p=(no_disclosures_message || (t "influencers.influencer_dashboard.disclosures.no_disclosures"))
%table.table.influencer-disclosures
  %tbody
    -disclosures.each do |disclosure|
      =render "influencers/disclosures/shared/row", :disclosure => disclosure

说:

undefined local variable or method `disclosures' for #<#<Class:0x133ca8a58>:0x133ca25e0>

但这怎么可能呢?我只是在控制器中询问了披露对象。知道为什么会这样,以及如何解决它?

谢谢!

1 个答案:

答案 0 :(得分:4)

您需要在披露前加上@。这是控制器将变量传递给视图的方式。

-if @disclosures.empty?

-@disclosures.each do |disclosure|

<强>更新

解决此问题的另一种方法是更改​​渲染调用。这将使其向后兼容同一部分的其他呼叫站点。

render :partial => "/influencers/disclosures/shared/list", :locals => {:disclosures => @disclosures}