我正在使用Ruby on Rails和Devise gem开发一个应用程序,默认情况下它是一个编辑页面,但是我想要将一些设置分成另一个页面,例如& #34; / settings / security"," / settings / avatar"等等。我能做到的最好方法是什么?我应该为每个页面或更多方法创建另一个控制器吗?谢谢。
答案 0 :(得分:3)
在UsersController本身添加方法安全性,头像和添加路由,例如,
获取“/ settings / security”,以:“user#security”
答案 1 :(得分:0)
Wicked是gem
,可帮助您创建和处理步骤wizard form
,如果这是您想要的。
答案 2 :(得分:0)
要扩展@Navin的答案,在这种情况下(你将自定义[非crud]动作添加到控制器)我建议你设置这样的路线:
current_user
那会给你路径:
如果您希望能够从这些页面修改其他用户,则此方法很有效。
如果您只想编辑登录用户的属性,您可能希望通过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。