我主要是LAMP开发人员,正在慢慢转向ruby开发。在PHP中,我可以使用单独的PHP文件为每个部分将页面拆分成段(以最大化代码重用)。一个例子就是wordpress,你有一个单独的标题/侧边栏/内容文件等。
这是否可以使用Ruby on Rails?它是否相当于将控制器/视图嵌入到另一个视图中?到目前为止,我对嵌入任何内容的方式感到有点难过,因为看起来有一个控制器有一个视图的路径,所以我不确定你会尝试包括哪个位。
答案 0 :(得分:1)
您要找的是partials
。您可以创建部分内容,例如侧边栏或页脚,然后将其渲染为模板。
官方Rails指南包含有关using partials的一些信息。
基本上,您创建一个以下划线为前缀的文件名,例如posts/_form.html.erb
,然后将其渲染到视图中
<%= render partial: "form" %>
您还可以从views
文件夹
<%= render partial: "/posts/form" %>
模板的相同命名约定(例如格式后缀)适用。
答案 1 :(得分:0)
以下是我使用partials实现侧边栏的方法。希望这将回答你问题的大部分内容。
首先,编辑 application_controller.rb 以将变量传递到布局视图。使用 before_action
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :set_page
def set_page
@categories = Category.all
end
end
接下来,编辑布局视图( application.html.erb )
<body>
<div class="container">
<div class="col-md-10">
<%= yield %>
</div>
<div class="col-md-2">
<%= render partial: 'categories/sidebar' %>
</div>
</div>
</body>
然后创建部分。您可以从部分目录访问控制器变量 的 /views/categories/_sidebar.html.erb 强>
<h3>Categories</h3>
<div class="row">
<br>
<% @categories.each do |category| %>
<h5 class="media-heading">
<%= link_to category.name, category %>
</h5>
<% end %>
</div>
有关页面屏幕截图和更多详细信息,请结帐my post。