加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 04:27:19 所属栏目:百科 来源:网络整理
导读:我对rails很新,所以如果我使用错误的术语,我会道歉. 我有一个模型Menuitem,我想在布局中显示内容.如何将实例变量传递到布局? 我正在寻找某种布局助手,但我找不到任何东西.我还在考虑在应用程序控制器中定义实例变量以在布局中访问它,这会起作用吗?如果是这
我对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")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读