在Ruby on Rails中将用户设置分成多个页面的最佳方法是什么?

时间:2017-01-05 06:22:22

标签: ruby-on-rails ruby devise

我正在使用Ruby on Rails和Devise gem开发一个应用程序,默认情况下它是一个编辑页面,但是我想要将一些设置分成另一个页面,例如& #34; / settings / security"," / settings / avatar"等等。我能做到的最好方法是什么?我应该为每个页面或更多方法创建另一个控制器吗?谢谢。

4 个答案:

答案 0 :(得分:3)

在UsersController本身添加方法安全性,头像和添加路由,例如,

  

获取“/ settings / security”,以:“user#security”

答案 1 :(得分:0)

Wickedgem,可帮助您创建和处理步骤wizard form,如果这是您想要的。

答案 2 :(得分:0)

要扩展@Navin的答案,在这种情况下(你将自定义[非crud]动作添加到控制器)我建议你设置这样的路线:

current_user

那会给你路径:

  • 设置/用户/:ID /安全
  • 设置/用户/:ID /化身

如果您希望能够从这些页面修改其他用户,则此方法很有效。

如果您只想编辑登录用户的属性,您可能希望通过Devise的member方法收集ID,因此您不希望在URL中使用用户ID。在这种情况下,请将collection替换为namespace :settings do resources :user do collection do get :security get :avatar end end end

read()

那会给你路径:

  • 设置/用户/安全
  • 设置/用户/化身

答案 3 :(得分:0)

我建议:

如果新视图是现有视图的备用视图,则添加自定义视图。例如,如果我希望show视图仅显示控制器资源数据的子集(例如A用户名和电子邮件),但我还想要一个显示更多数据的详细视图(例如姓名,电子邮件,地址,电话号码),然后我会在控制器上使用自定义的“详细信息”视图。

如果新视图显示与附加到控制器资源的资源相关的信息,则应使用新控制器。

使用您的示例,如果安全视图显示仅与安全性相关的设置 - 这是修改后的编辑视图,我将在设置控制器上使用自定义操作。

虚拟形象很可能是附加到设置资源的资源 - 因此它应该有自己的控制器。

最后,如果您要查看要通过多个步骤输入的设置,我建议您查看some of the multi-step techniques