ruby-on-rails – 布局中的实例变量

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 布局中的实例变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对rails很新,所以如果我使用错误的术语,我会道歉.

我有一个模型Menuitem,我想在布局中显示内容.如何将实例变量传递到布局?

我正在寻找某种布局助手,但我找不到任何东西.我还在考虑在应用程序控制器中定义实例变量以在布局中访问它,这会起作用吗?如果是这样,最好的办法是什么?

谢谢!

解决方法

我要注意两件事.首先,您可能不希望每次在应用程序中呈现任何页面时都执行此查询.你肯定想要缓存你的MenuItems.其次,在MenuItems类上放置一个方便方法来缓存这个值可能会有所帮助.所以,如果我定义一个方法
def MenuItem.all_for_menu
  @@all_for_menu ||= MenuItem.find(:all)  #returns value if exists,or initializes it
end

我可以在布局中调用MenuItem.all_for_menu并获取所有菜单项.当您添加新的或编辑新的时,您必须使其无效.

另一种缓存方法是使用标准缓存调用将数据放入部分并缓存该片段:

<% cache(:controller => "menu_items",:action => "list",:action_suffix => "all_menu_items") do %>
  <%= render :partial => "menu",:collection => MenuItem.all_for_menu %>
<% end %>

然后,您可以通过调用以使该片段到期:

expire_fragment(:controller => "menu_items",:action_suffix => "all_menu_items")

猜你在找的Ruby相关文章