为什么这会导致 :show 根本没有布局:layout 'admin', : except => [:展示]
为什么这会导致 :show 根本没有布局:layout 'admin', : except => [:show]
这是预期的行为吗?我被迫放置渲染:layout => 'application' 在一个空的 def 显示结束中。
显示操作不应该默认为基本布局吗?
why does this cause :show to get no layout at all: layout 'admin', :except => [:show]
Is this the intended behavior? I'm forced to put a render :layout => 'application' in an otherwise empty def show end.
Shouldn't the show action default to the base layout?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这实际上让我有点惊讶,我不得不去来源检查。答案是否定的,它确实/不应该默认为应用程序布局。相反,传递的条件用于确定操作是否具有布局,因此混合方法的名称action_has_layout? (Rails 3)。
我有一半期望它的行为类似于
respond_to
,您可以多次调用它来为不同的操作建立条件。在任何情况下,您都可以通过向包含您的逻辑的
layout
发送一个方法(通过过程或符号引用方法)来轻松处理此问题,而不是简单地定义一个空操作来呈现不同的布局。例如:
This actually surprised me a bit and I had to go to the source to check. The answer is no, it does/should not default to the application layout. The conditions passed instead are used to determine if the action has a layout at all, hence the name of the mixed in method action_has_layout? (Rails 3).
I'd half expected it to behave like
respond_to
, which you can call multiple times to build up the conditions for different actions.In any case you can easily handle this by sending a method to
layout
containing your logic (via a proc or a symbol referencing method), rather than defining an empty action simply to render a different layout.For example: