【问题标题】:How would I go about adding a simple menu to a Rails Application? (How to use yield :menu)我将如何向 Rails 应用程序添加一个简单的菜单? (如何使用产量:菜单)
【发布时间】:2010-07-19 22:34:40
【问题描述】:

我想在我的 First Ever Rails 应用程序中添加一个菜单。没什么太复杂的。 我已经确定我应该从 application.html.erb 中引用它,但在那之后我被卡住了。

这是我到目前为止所得到的(不多)

<%= render :partial => "menu" %>

如果我在 application.html.erb 中呈现部分调用“菜单”,我应该将菜单文件放在哪里,我该怎么称呼它?需要进入视图的控制器吗?

我可以从我所在的任何布局子文件夹中调用这个部分吗?

第二部分。如果我想根据我所在的视图显示不同的内容 - 我该怎么做?

<body>
  <p>[<%= yield :menu %>]</p>
  <%= yield %>
</body>
</html>

我刚刚学习 Rails,对于这些愚蠢的问题,我深表歉意。此外,我不仅对解决方案感兴趣,而且对最佳实践的想法感兴趣。

【问题讨论】:

  • bjg 有正确答案,如果您想找到更多示例,请查找 yield :sidebar implementations。
  • 啊-我可以看到 yield :sidebar 现在做了什么。我想我想知道如何渲染局部。我会更新问题。
  • 已将 "menu" %> 添加到我的 application.html.erb 文件中,并将 _menu.erb 添加到 "views\layouts" 但它正在寻找部分查看每个控制器的文件夹。如何让它寻找父部分?
  • 好的 - 我明白了。我需要将部分处理为 "

    "layouts/menu" %>

    " 这让我想到了最佳实践。通用菜单最好放在哪个文件夹中?
  • 对于这种内容我使用app/views/shared文件夹。

标签: ruby-on-rails


【解决方案1】:

基本而言,您正在寻找content_for 助手。你把它放在你的视图中,然后将命名块填充到部分或布局中,例如:menu。如果您愿意,您可以选择使用部分来实际定义 content_for 区域的内容。

在视图中:

<% content_for :menu do %>
  <ul>
    <li> ... </li>
    <li> ... </li>
  </ul>
<% end %>

或作为:

<% content_for :menu do %>
  <%= render :partial => "some_menu_content" %>
<% end %>

在布局或局部:

<div id="menu">
  <%= yield :menu%>
</div>

观看 Railscasts 系列中的 screencast 了解更多信息。它很旧,但仍然适用

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 1970-01-01
    • 2012-10-09
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    相关资源
    最近更新 更多