布局中的变量部分来自其他控制器

时间:2012-04-29 20:22:56

标签: ruby-on-rails-3 variables partial-views view-helpers

今天我想在我的shared/menu部分中使用一些变量。我知道我应该在application_controller中使用某种帮助方法(或类似的东西),但它对我不起作用。这是我的临时解决方案(shared/_menu.html.haml):

- @pagecontents = Pagecontent.all
- @pagecontents.each do |pc|
  %ul
    %li
      = link_to pc.title, pc

我不想在我的视图中直接定义@pagecontents变量! :/我的问题是在@pagecontent文件的某处添加application_controller变量,但是当我尝试时:

def pagecontentforpartial
  @pagecontents = Pagecontent.all
end

然后尝试在我的局部视图中访问此变量我得到一个错误,这个方法是nil(但已经有很多记录!)有人可以解释我如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以使用render方法

直接将对象传递给部分对象

这是你的shared/_menu.html.haml

- pagecontents.each do |pc|
%ul
  %li
    = link_to pc.title, pc

当您需要显示它时,您可以在视图中使用此方法

render 'shared/menu', pagecontents: @pagecontents

@pagecontents来自控制器,当然