首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在2个布局中使用1个控制器

在2个布局中使用1个控制器
EN

Stack Overflow用户
提问于 2015-09-22 00:19:43
回答 4查看 107关注 0票数 1

我有一个逻辑问题,我想不出怎么做。首先,我在一个社交网站上工作,我用纯PHP完成了这个网站,但现在我正在用rails重写后端。

我的问题是,我生成了UsersController,它有新的、创建、显示、编辑、更新、删除和销毁。

我想我可以使用“新”显示注册页面,“创建”处理注册,“显示”显示配置文件页面,“编辑”显示帐户设置和“更新”处理编辑。

我可能在这里有一个逻辑问题,也许我应该把“新”和“创建”在一个注册控制器。这是我困惑的地方。第一个逻辑的问题是,我有两个布局,一个是登录前的布局,另一个是登录后的布局。(你可以想象Facebook在登录前和登录后的标题)。

因此,当我有两个不同的布局,我不能使用一个控制器在2个布局。因为注册页面有“前登录标题设计”和帐户设置和配置文件有“后登录标题设计”。您可以猜到,我在控制器中定义了布局。

我不知道我是否解释得很好。谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-09-22 02:12:26

我决定使用单独的控制器,而不是在两个布局中使用1个控制器。因此,我有profile_controller,它有“编辑”和“更新”帐户设置和“显示”显示配置文件。我也是users_controller,它有以下内容:登录、login_attempt、注册、signup_attempt等等。

所以,我不是把注册和编辑在一个控制器,而是使用两个不同的控制器是更好和干净,我想。

票数 0
EN

Stack Overflow用户

发布于 2015-09-22 00:57:06

默认情况下,Rails将查找与控制器同名的布局,否则将查找application.html.erb。但您也可以指定一个控制器范围(这对您没有帮助,但请容忍我)

代码语言:javascript
运行
复制
class SomethingController
  layout "some_name"
  ...

这仍然是布局范围,所以不是你所需要的。

但是,您也可以在操作中为每个对render的调用指定特定的布局:

代码语言:javascript
运行
复制
def edit
   #some logic
   render "some_template", :layout => "some_layout"
end

或者,接受默认的模板查找,但仍然指定布局:

代码语言:javascript
运行
复制
def edit
   # some logic
   render :layout => "some_layout"
end

还有一种方法可以指定布局,这可能特别适合于“一个布局(如果没有登录,另一个布局是登录的话)”的用例:

代码语言:javascript
运行
复制
class SomeController
   layout :method_name_to_determine_layout

   # ... actions ...

   protected
   def method_name_to_determine_layout
     if current_user
        "logged_in_layout_name"
     else
        "not_logged_in_layout_name"
     end
   end

您可以了解更多关于在布局和渲染Rails指南中指定布局的不同方法的信息。

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2015-09-22 00:47:04

Rails具有基本的CRUD默认操作。此外,根据HTTP谓词,每个动作都可以有不同的处理。还可以添加自定义操作和路由。

对于每个默认操作,最好遵循标准的Rails实践。例如,“新”操作应该路由到表单,以便在通过GET访问时创建一个新用户。HTTP到表单应该路由到"create“操作。

如果需要添加额外的控制器操作,请使用自定义方法。我再次强调,简单的CRUD操作应该遵循正常的Rails约定。

阅读更多关于路由的信息

要理解Rails中的简单CRUD操作,请多次阅读本指南

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32706471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档