首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可以在application.html.erb中访问模型数据库表中的值吗?

可以在application.html.erb中访问模型数据库表中的值吗?
EN

Stack Overflow用户
提问于 2011-01-19 05:29:47
回答 3查看 172关注 0票数 0

我正在试着做一个应用程序

有了用户,这个用户可以加入多个组-每个组在页面上都有相同的菜单,他们的组页面可以访问关于group/1或group/2的内容

所以我想把菜单放在application.html.erb里,lnk依赖于group.id --但是我不知道如何在application.html.erb里访问这个id

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-19 08:50:41

这通常是在布局中使用content_for来完成的。假设您希望菜单位于application.html.erb中的某个div中

代码语言:javascript
复制
# application.html.erb
<div id="menu_div>
  <ul>
  ... etc ...
  </ul>
</div>

将内部内容替换为yield语句:

代码语言:javascript
复制
<div id="menu_div>
  <%= yield :group_menu %>
</div>

然后在视图样板中添加content_for块:

代码语言:javascript
复制
# page
<% content_for :group_menu do %>
  <ul>
  ... etc ...
  </ul>
<% end %>

然后,每个页面模板都可以在content_for块中定义自己的菜单代码。这可以通过在块中使用帮助器方法并传入实例变量来进一步推广。

编辑

假设在控制器中分配了@group,您可能会执行如下操作:

代码语言:javascript
复制
<% content_for :group_menu do %>
  <%= show_me_the_menu(@group) %>
<% end %>

在helper中(显然是人为设计的例子)

代码语言:javascript
复制
def show_me_the_menu(group)
  content_tag :ul do
    group.users.collect do |user|
      concat(content_tag(:li, user.some_method))
    end
  end
end
票数 1
EN

Stack Overflow用户

发布于 2011-01-19 05:40:54

正确的方法是通过before_filterApplicationController中设置它,并将其用作视图中的实例变量。

所以在控制器中设置类似@links =的逻辑,你可以根据当前用户计算你的链接。

在视图中,您可以执行以下操作:

代码语言:javascript
复制
<ul>
  <%- for link in @links -%>
    <li><%= link.title =>
  <%- end -%.
</ul>

当然,只有当您希望您的链接对所有控制器/视图都可用时,才可以在ApplicationController中设置@links,我想您确实是这样做的。

Rails单元格也可以在这里使用http://cells.rubyforge.org/

票数 1
EN

Stack Overflow用户

发布于 2011-01-22 23:24:21

我现在用不同的方式解决了我的问题。我在组模型中创建了一个“菜单”,并在application.html.erb中呈现为部分菜单

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4729267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档