我有一个逻辑问题,我想不出怎么做。首先,我在一个社交网站上工作,我用纯PHP完成了这个网站,但现在我正在用rails重写后端。
我的问题是,我生成了UsersController,它有新的、创建、显示、编辑、更新、删除和销毁。
我想我可以使用“新”显示注册页面,“创建”处理注册,“显示”显示配置文件页面,“编辑”显示帐户设置和“更新”处理编辑。
我可能在这里有一个逻辑问题,也许我应该把“新”和“创建”在一个注册控制器。这是我困惑的地方。第一个逻辑的问题是,我有两个布局,一个是登录前的布局,另一个是登录后的布局。(你可以想象Facebook在登录前和登录后的标题)。
因此,当我有两个不同的布局,我不能使用一个控制器在2个布局。因为注册页面有“前登录标题设计”和帐户设置和配置文件有“后登录标题设计”。您可以猜到,我在控制器中定义了布局。
我不知道我是否解释得很好。谢谢。
发布于 2015-09-22 02:12:26
我决定使用单独的控制器,而不是在两个布局中使用1个控制器。因此,我有profile_controller,它有“编辑”和“更新”帐户设置和“显示”显示配置文件。我也是users_controller,它有以下内容:登录、login_attempt、注册、signup_attempt等等。
所以,我不是把注册和编辑在一个控制器,而是使用两个不同的控制器是更好和干净,我想。
发布于 2015-09-22 00:57:06
默认情况下,Rails将查找与控制器同名的布局,否则将查找application.html.erb。但您也可以指定一个控制器范围(这对您没有帮助,但请容忍我)
class SomethingController
layout "some_name"
...这仍然是布局范围,所以不是你所需要的。
但是,您也可以在操作中为每个对render的调用指定特定的布局:
def edit
#some logic
render "some_template", :layout => "some_layout"
end或者,接受默认的模板查找,但仍然指定布局:
def edit
# some logic
render :layout => "some_layout"
end还有一种方法可以指定布局,这可能特别适合于“一个布局(如果没有登录,另一个布局是登录的话)”的用例:
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指南中指定布局的不同方法的信息。
希望这能有所帮助。
发布于 2015-09-22 00:47:04
Rails具有基本的CRUD默认操作。此外,根据HTTP谓词,每个动作都可以有不同的处理。还可以添加自定义操作和路由。
对于每个默认操作,最好遵循标准的Rails实践。例如,“新”操作应该路由到表单,以便在通过GET访问时创建一个新用户。HTTP到表单应该路由到"create“操作。
如果需要添加额外的控制器操作,请使用自定义方法。我再次强调,简单的CRUD操作应该遵循正常的Rails约定。
阅读更多关于路由的信息
要理解Rails中的简单CRUD操作,请多次阅读本指南
https://stackoverflow.com/questions/32706471
复制相似问题