在Rails中定制Devise视图

我使用的devise用户身份validation,但我有很好的模型注册,login等网页。 我已经完成了rails generate devise:views User命令,并在视图文件夹中的所有视图,但是,当我用我自己的new.html.erbreplaceregistration / new.html.erb,没有任何变化,也没有看起来不同。 就好像我做了什么事。

任何人都知道我做错了什么,或者至less如何成功地定制devise意见

PS是否需要注意,我将devise/注册#新路线改为/注册?

您的路线signupdevise/registrations#new将渲染视图views/devise/registrations/new.html.erb 。 这听起来像你对views/user/registrations/new.html.erb进行了更改,这将解释为什么你没有看到自从没有呈现以来所做的更改。

您需要创build一个从Devise::RegistrationsController扩展的user/registrations_controller.rb ,并将您的/signup路线指向user/registrations#new /signup ,或者您可以直接将其更改为views/devise/registrations/new.html.erb

同样的想法适用于您的login( devise/sessions )页面。

希望这可以帮助。

一目了然的答案。

…代替

 rails generate devise:views User 

使用:

 rails generate devise:views 

如果你已经完成了,将app/views/User创build的文件夹移动到一个新的文件夹app/views/devise (或者只是重命名User文件夹来devise ,如果这是一个选项)。

这些文件夹是:

 app/views/User/confirmations app/views/User/mailer app/views/User/passwords app/views/User/registrations app/views/User/sessions app/views/User/shared app/views/User/unlocks 

没有其他更改是必要的。

虽然这是一个古老的问题,但我想我会join它,以防有人绊倒。 我不确定这是否是一个新的增加,因为这个问题最初被问到,但如果是这样,更简单(更现代)的方法是这样的。

在文件config/initializers/devise.rb有以下代码块:

 # ==> Scopes configuration # Turn scoped views on. Before rendering "sessions/new", it will first check for # "users/sessions/new". It's turned off by default because it's slower if you # are using only default views. # config.scoped_views = false 

通过取消注释config.scoped_views = false并将其值更改为true ,devise将自动检查自定义视图是否存在,如果存在,则将其提供。 正如它所说,它确实会给应用程序增加一些开销,但到目前为止我的经验是微乎其微的。

对于仍然有问题的人来说,问题在于调用rails generate devise:views User 。 它应该是rails generate devise:views用于从Devise Rails Engine获取当前视图的视图。 这将产生适当的意见,这将与默认路线工作。

生成自定义视图后,例如

 rails generate devise:views User 

打开config/initializer/devise.rb

 view config.scoped_views = true 

你完成了。

使用rails g devise:views User允许您自定义何时有多个angular色。

正确的方法是进入config/initializer/文件夹中的devise.rb

并取消注释并设置config.scoped_views = true

现在你可以编辑视图erb文件没有任何问题

我有同样的问题,直到我回去读了devise文档:)

rails generate devise:views initializers/devise.rb rails generate devise:views确保你进入initializers/devise.rb并设置config.scoped_views = true 。 这在https://github.com/plataformatec/devise中的devise文档以及;devise.rb注释中进行了devise.rb

当我这样做后,我自己在views/users中的views/users开始出现,而不是在gem中。

为了将来的参考,你可以重命名文件夹从devise=>用户,反之亦然,导轨会find一个路线。