d11*_*wtq 12 layout ruby-on-rails
也许有一个技术/实现的原因,但在我看来,"布局"显然是视图层的一部分,但Rails似乎只允许在控制器级别指定布局.
我的控制器不应该关心布局......模板应该.有没有办法在.erb文件中指定要使用的布局?
就像是:
<%= with_layout :news_feed do %>
<p>
My markup in here.
</p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
或者你能想到的任何其他实现......但是文档似乎只是从控制器的角度来看布局.
也许实现一个with_layout帮助器并不太难.
编辑| 我找到了我正在寻找的东西:
<% render :layout => "some_layout" do %>
<p>
My markup here
</p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
现在提供的ActionController具有:
class ApplicationController < ActionController::Base
layout nil
Run Code Online (Sandbox Code Playgroud)
然后,每个模板都可以使用这种方法选择自己的布局.
如果在app/layouts中放置一个名称与控制器匹配的布局,那么将使用该布局,因此您不必严格指定它们是否完全相同.无论哪种方式,花花公子如何编写你的模板现在可以完全控制它,而不是那个正在编写控制器的家伙:)
我做了一些研究,但没有找到与您正在寻找的类似的解决方案。
我认为这可能与以下事实有关:可以通过your_controllers_name.html.erb在app/views/layouts. 如果特定控制器始终使用相同的布局,这可能会从控制器中删除任何逻辑。也许这就是您正在寻找的?如果布局没有匹配的控制器名称,则将application.html.erb使用默认值。
如果您需要有条件地渲染不同的布局,那么确实需要在控制器中做出该决定。否则你就会把决策逻辑强加到你的观点中。您的视图不必决定它需要什么布局,因为控制器可以做出决定并设置视图所需的任何必要数据。
| 归档时间: |
|
| 查看次数: |
1405 次 |
| 最近记录: |