加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-4 – Rails / Devise / Bootstrap:无法在注册模

发布时间:2020-12-17 02:56:20 所属栏目:百科 来源:网络整理
导读:我为Devise注册创建了一个Bootstrap模式,可以通过着陆页导航栏上的链接访问.模态正常工作,即创建用户.但是当我尝试将密码长度提示添加到密码输入时 – 什么都没有.我检查了Devise实例变量@minimum_password_length的值,它是nil.有什么建议? Rails 4.2.6,Rub
我为Devise注册创建了一个Bootstrap模式,可以通过着陆页导航栏上的链接访问.模态正常工作,即创建用户.但是当我尝试将密码长度提示添加到密码输入时 – 什么都没有.我检查了Devise实例变量@minimum_password_length的值,它是nil.有什么建议?

Rails 4.2.6,Ruby 2.3.0,Bootstrap 4.0.0.alpha3,Devise 4.0.0,Simple Form 3.2.1

/config/initializers/devise.rb

...
if Rails.env.test? || Rails.env.development?
  config.password_length = 2..128
else
  config.password_length = 8..128
end
...

/db/migrate/20160417123456_devise_create_users.rb

...
## Confirmable
t.string   :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string   :unconfirmed_email # Only if using reconfirmable
...
add_index :users,:confirmation_token,unique: true
...

/app/models/user.rb

...
devise :confirmable,:database_authenticatable,:registerable,:recoverable,:rememberable,:trackable,:validatable
...

/views/shared/_navbar.html.haml

...
%li.nav-item.pull-xs-right
  = link_to 'Sign Up','#signUpModal',data: { toggle: 'modal',target: '#signUpModal' },id: 'sign-up-nav-link',class: 'account-nav-link nav-link'

%li.nav-item.pull-xs-right
  = link_to 'Log In','#logInModal',target: '#logInModal' },id: 'log-in-nav-link',class: 'account-nav-link nav-link'

/app/views/shared/_sign_up_modal.html.haml

#signUpModal.modal.fade{ tabindex: '-1',role: 'dialog',aria: { labelledby: 'signUpModalLabel',hidden: 'true' } }
  .modal-dialog{ role: 'document' }
    .modal-content

      .modal-header
        %button.close{ type: 'button',data: { dismiss: 'modal' },aria: { label: 'Close' } }
          %span{ aria: { hidden: 'true' } }
            %i.fa.fa-times-circle
        %h4#signUpModalLabel.modal-title Sign Up

      = simple_form_for resource,as: resource_name,url: registration_path(resource_name) do |f|

        .modal-body

          = f.error_notification

          %fieldset.form-group
            = f.input :email,label:        'Email Address',required:     'true',autocomplete: 'off',input_html:  { id: 'email-input',class: 'form-control' }

          %fieldset.form-group
            = f.input :password,label:        'Password',input_html:  { class: 'form-control' },hint:        ('Min. length of #{ @minimum_password_length }' if @validatable)
          %fieldset.form-group
            = f.input :password_confirmation,label:        'Password Confirmation',input_html:  { class: 'form-control' }

          %fieldset.form-group
            = f.input :subdomain,label:        'Subdomain',input_html:  { class: 'form-control' }

          - if devise_mapping.rememberable?
            = f.input :remember_me,label:         'Remember me',as:            :boolean,boolean_style: :inline

        .modal-footer
          .actions
            = link_to 'Cancel','javascript:;',class: 'btn btn-sm btn-secondary'
            = f.button :submit,'Sign Up',disable_with: 'Creating account...',class: 'btn btn-sm btn-primary'

/app/helpers/application_helper.rb

def resource_name
  :user
end

def resource
  @resource ||= User.new
end

def devise_mapping
  @devise_mapping ||= Devise.mappings[:user]
end

/config/routes.rb

root to: 'landing_page#index'
devise_for :users
...

解决方法

我刚刚通过将@minimum_password_length交给视图控制器函数中的视图解决了这个问题.您可以使用您的设计模型访问minimum_password_length.就我而言,它是用户模型.在代码中:

@minimum_password_length = User.password_length.min

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读