在Rails中定制Devise视图
我使用的devise用户身份validation,但我有很好的模型注册,login等网页。 我已经完成了rails generate devise:views User
命令,并在视图文件夹中的所有视图,但是,当我用我自己的new.html.erbreplaceregistration / new.html.erb,没有任何变化,也没有看起来不同。 就好像我做了什么事。
任何人都知道我做错了什么,或者至less如何成功地定制devise意见
PS是否需要注意,我将devise/注册#新路线改为/注册?
您的路线signup
或devise/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一个路线。