【问题标题】:Can't override default devise gem views无法覆盖默认设计 gem 视图
【发布时间】:2012-03-15 00:47:12
【问题描述】:

我想使用我的设计从app/views/users 生成的视图(使用命令rails g devise:views users)。

我已经从app/initializers/devise.rb 设置了这些选项:

config.scoped_views = true
config.default_scope = :user

但它仍然使用来自/usr/lib/ruby/gems/1.8/gems/devise-2.0.4/app/views/devise/的默认设计视图

那我该怎么办? 谢谢。

【问题讨论】:

  • 您的观点是在app/views/users 还是app/views/users/sessions
  • 汤姆 L,yes
  • 抱歉,您回复了我的问题,因为这是纳什的重复。
  • Tom L,我的 app/views/users 是用 rails g devise:views users 生成的,所以它具有相同的结构,没有任何改变,只是生成它以任何方式指出设计应该使用我的 app/views/users 目录?
  • 您的最终目标是什么,为用户提供 CRUD 界面或修改登录视图?

标签: ruby-on-rails ruby-on-rails-3 devise views gem


【解决方案1】:

我也遇到了同样的问题,我花了很长时间才弄明白。设置config.scoped_views = true 是第一步,但还有一步不太清楚。

如果您仔细查看rails g devise:views users 生成的一些视图,您会发现模板在文件底部包含<%= render "devise/shared/links" %>。由于您已生成这些视图,因此共享链接现在位于 users/shared/links。由于 devise 不再在 devise/shared/links 中找到任何内容,因此它使用默认链接视图。

<%= render "devise/shared/links" %> 更改为<%= render "users/shared/links" %>,就可以了!

【讨论】:

  • 这就是我的答案)早期没有范围设置,并且设计默认覆盖默认视图。
【解决方案2】:

对于自定义登录视图,当您使用默认的User 设计资源时,我认为您只需要创建app/views/devise/sessions/new.html.erb。而且,就目前而言,让我们忘记 CRUD 接口。并撤消那些config/initializers/devise.rb 设置。看看你能不能让它发挥作用。

【讨论】:

  • 这种组合有效,但我不明白为什么我的组合不起作用。我真的需要工作范围。
  • 这样就行了。凉爽的。如果你想要 CRUD,你只需要通常的控制器和视图。我认为除非你有不止一种设计用户,否则你不需要搞乱范围。
  • 要为用户使用范围视图,您需要将登录视图从 app/views/devise/sessions/new.html.erb 移动到 app/views/users/sessions/new.html.erb
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
  • 1970-01-01
  • 2012-04-10
相关资源
最近更新 更多