2016-04-21 68 views
4

我已經爲設計註冊創建了Bootstrap模式,可通過着陸頁導航欄上的鏈接訪問它。該模式正常工作,即創建用戶。但是,當我嘗試將密碼長度提示添加到密碼輸入 - 什麼也沒有。我檢查了Devise實例變量@minimum_password_length的值,它是零。有什麼建議麼?Rails/Devise/Bootstrap:無法在註冊模式中訪問@minimum_password_length

的Rails 4.2.6,2.3.0紅寶石,引導4.0.0.alpha3,設計4.0.0,簡單的表單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 
... 

/應用/模型/ U ser.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', data: { toggle: 'modal', 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', 
               required:  'true', 
               autocomplete: 'off', 
               input_html: { class: 'form-control' }, 
               hint:  ('Min. length of #{ @minimum_password_length }' if @validatable) 
      %fieldset.form-group 
      = f.input :password_confirmation, label:  'Password Confirmation', 
               required:  'true', 
               autocomplete: 'off', 
               input_html: { class: 'form-control' } 

      %fieldset.form-group 
      = f.input :subdomain,    label:  'Subdomain', 
               required:  'true', 
               autocomplete: 'off', 
               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:;', data: { dismiss: 'modal' }, 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 
... 

回答

5

我只是解決了這個問題,用人工的@minimum_password_length在視圖控制器功能的看法。您可以使用您的設計模型訪問minimum_password_length。在我的情況下,它是用戶模型。代碼:

@minimum_password_length = User.password_length.min