我是Rails新手,有一个关于CMS中布局和路由的问题。我在网上搜索后没有找到这个问题的答案,所以我希望这里有人能帮助我。
我正在建立一个CMS,并有布局,* 应用程序。html。erb*(默认)这是前面的公共页面和 admin.html.erb 这是登录后可用。
我有一个名为 Post 的资源。有没有可能只有show视图使用默认布局,而其他视图使用管理布局?
换句话说,我希望单个帖子的URL像“myAppDomain/posts/1”一样,并使用默认布局
虽然管理视图应该具有 /admin 作为前缀并使用admin布局,
例如“myAppDomain/admin/posts”,“myAppDomain/admin/posts/1/edit”
现在我已经设置了一个路由,将/admin“添加”到posts的URL中
scope "/admin" do
resources :posts
end
字符串
在PostsController中,我指定使用admin布局
class PostsController < ApplicationController
before_filter :authorize , :except => [:show]
layout 'admin'
...
型
所以现在人们可以在不登录的情况下阅读文章,但是在我的欢迎页面上,指向单个文章视图的链接被呈现为“myAppDomain/admin/posts/1”,并且它使用了admin布局
<%= link_to post.title, post %>
型
有没有一种方法可以在资源的单个视图上使用不同的布局和路线,或者我应该采用不同的方法?
3条答案
按热度按时间eyh26e7m1#
只需在操作中指定布局
字符串
xa9qqrwz2#
您可以执行before_action
字符串
在控制器的顶部:
型
现在你可以忘记添加布局了。你可以更进一步,把before动作放在你的应用程序控制器中,你可以通过添加相同的before_action在你所有的控制器中添加该功能。这样你可以保存很多额外的代码。
ogq8wdun3#
我来到这里寻找如何在所有没有布局.如果有人在这之后,使用
render layout: false
:字符串