【问题标题】:how to add breadcrumb to devise ruby on rails如何添加面包屑以设计 ruby​​ on rails
【发布时间】:2016-10-11 15:59:52
【问题描述】:

我想将面包屑添加到(设计的)注册和登录表单,但我不知道在哪里将面包屑添加到设计控制器?

我有从 Devise::RegistrationsController 继承的registrations_controller,并在“编辑”中添加了面包屑。我尝试创建一个 users__controller (继承 Devise::UsersController ),但这给了我一个循环引用错误。

如何将这些面包屑添加到设计中的用户“页面”?

谢谢, 乔

【问题讨论】:

    标签: ruby-on-rails devise breadcrumbs


    【解决方案1】:

    我在我的项目中使用 gem breadcrumbs on rails 和 devise。

    如果您还没有使用设计制作用户模型,请先制作:

    rails g devise User
    rake db:migrate
    rails generate devise:views users
    

    我的 registration_controller.rb 看起来像这样:

    # app/controllers/registrations_controller.rb
    class RegistrationsController < Devise::RegistrationsController
        add_breadcrumb "home", :root_path
        add_breadcrumb "contact", :contacts_path
    end
    

    我改变了路线:

    devise_for :users, :controllers => { registrations: 'registrations' }
    

    在 application.html.erb 布局中,我添加了面包屑(就在 上方)

    <%= render_breadcrumbs %>
    

    我刚刚测试过,从截图中可以看出效果。

    已编辑:

    如果您想在 Devise gem 的其他页面添加面包屑,例如忘记密码页面,您可以制作新的控制器:

    # app/controllers/passwords_controller.rb
    class PasswordsController < Devise::PasswordsController
      add_breadcrumb "home", :root_path
      add_breadcrumb "contact", :contacts_path
    end
    

    并更新您的路线:

      devise_for :users, controllers: {
        registrations: 'registrations',
        passwords: 'passwords'
      }
    

    如果它适合你,请告诉我。

    【讨论】:

    • 如何添加面包屑以忘记密码?和其他设计页面?我似乎无法让他们工作。
    • @JoeGuerra 检查我编辑的答案,如果有帮助,请告诉我。
    • 谢谢,这似乎奏效了。所以,基本上检查路由表中的路由,为新路径创建一个控制器,并将其添加到路由配置文件中。
    • 我需要一个用于登录,应该是哪个控制器,或者我需要创建一个新的控制器吗?
    • 原理相同。例如,当您运行rails generate devise:views users 并转到views 文件夹时,您将看到生成的视图。看看截图:imgur.com/a/9OCAv 我们只有视图,没有控制器。如果您想为 Login 添加面包屑、创建新的 SessionsController、添加面包屑并将路由更新到:devise_for :users, controllers: { registrations: 'registrations', passwords: 'passwords', sessions: 'sessions' },您可以从 Devise 视图列表中看到我们制作了哪些控制器(PasswordsController 和 RegistrationsController)
    【解决方案2】:

    您可以使用以下方法生成设计视图:

    rails generate devise:views users

    如果不是User(例如AdminManager 等),请务必将users 替换为您的用户型号名称

    然后,您可以在这些视图中添加显示面包屑所需的任何内容。

    【讨论】:

    • 嗨,我不需要先在注册控制器中定义它们吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 2011-04-11
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多