如何在rails 3中将局部变量传递给部分应用程序布局?

kon*_*ung 3 layout ruby-on-rails partial-views partial

我有几个需要在所有控制器中调用的变量.在布局页脚中显示最新消息.

我在application_controller.rb中创建它们

@hq_news_item = NewsItem.where(:branch_code => "CORP").first
@branch_news_item = NewsItem.where(:branch_code => "MN").first
Run Code Online (Sandbox Code Playgroud)

在我的layouts/application.html.haml中

= render :partial => "layouts/footer_news"  , :hq_news_item => @hq_news_item, :branch_news_item => @branch_news_item
Run Code Online (Sandbox Code Playgroud)

然后在我的布局/ _footer_news中我设计它们

= hq_news_item.title
= hq_news_item.author.name
... etc
Run Code Online (Sandbox Code Playgroud)

这是事情,无论我做什么 - 它一直说hq_news_item是部分未定义的.

我所有的其他部分工作正常.我认为这与布局而非视图这一事实有关.在文档中找不到任何有意义的内容.

有任何想法吗?

谢谢.

Pan*_*kos 7

我认为你需要将变量作为局部变量传递给partial:

= render :partial => "layouts/footer_news", :locals => { :hq_news_item => @hq_news_item, :branch_news_item => @branch_news_item }
Run Code Online (Sandbox Code Playgroud)

否则Rails不会真正理解你作为变量传递给partial的部分以及作为参数传递给render函数的内容.