我正试图在rails应用程序上设计我的ruby。我创建了views / layouts / posts.html.erb,用于设置PostsController
的{{1}}视图。
无论用户正在查看什么视图,我都希望添加一个始终位于页面顶部的主栏。我认为这就是views/layouts/application.html.erb
的用途。
这似乎与我一致: http://jacqueschirag.wordpress.com/2007/08/02/rails-layout-and-nested-layout-basics/
整个Rails应用程序(所有控制器的所有视图)都将 使用这个布局:
views/layouts/application.rhtml
单个控制器中的所有视图都将使用此布局。对于 例如,布局 weclome_controller.rb将使用它 布局。注意,'_controller'是 离开了布局:
views/layouts/welcome.rhtml
我做错了什么?
以下是我application.html.erb
<div id="top-bar">
<div id="user_nav">
<% if current_user %>
<%= link_to "My Profile", current_user %>
<%= link_to "Logout", logout_path %>
<% else %>
<%= link_to "Register", new_user_path %>
<%= link_to "Login", login_path %>
<% end %>
</div>
</div>
<%= yield %>
答案 0 :(得分:5)
您的布局application.html.erb
和posts.html.erb
都应该将主栏显示为部分:
<%= render :partial => 'layouts/main_bar' %>
所有布局都包含用于包装页面的<html>
元素;你没有一个布局环绕另一个。
答案 1 :(得分:1)
信息是正确的 - 'views / layouts / application.html.erb'应该正常工作。
您是否使用<%= ..... %>
包含了“主栏”内容(即你错过了布局文件中的=
标志吗?)
并且,您是否在布局文件中的某处包含了<%= yield %>
语句?
另外,你使用的是什么版本的Rails?
你应该发现这个Layouts and Rendering in Rails对于获取rails视图和布局的基础非常有帮助
答案 2 :(得分:1)
我很困惑......你还有意见/布局/ posts.html.erb吗?如果是这种情况,从PostsController呈现的所有视图都将使用此布局而不是views / layouts / application.html.erb