سؤال

أحاول الحصول على طرق مخصصة تعمل في تطبيق Rails الخاص بي (Ruby 1.9.2 مع Rails 3).

هذا هو ملف config/routes.rb الخاص بي

match '/dashboard' => 'home#dashboard', :as => 'user_root'
devise_for :user do
   get "/login", :to => "devise/sessions#new" # Add a custom sign in route for user sign in
   get "/logout", :to => "devise/sessions#destroy" # Add a custom sing out route for user sign out
   get "/register", :to => "devise/registrations#new" # Add a Custom Route for Registrations
end

ولكن إرسال النموذج على /تسجيل الدخول أو /التسجيل ينتقل إلى المستخدمين /تسجيل الدخول والمستخدمين /sign_up. كيف يمكنني منع هذا من الحدوث. أو حتى أفضل تأكد من أن جميع طلبات المستخدمين/sign_in وما إلى ذلك بشكل افتراضي.

أيضًا كيف يمكنني جعل تسجيل الدخول جزءًا جزئيًا لتضمينه في أي وحدة تحكم؟ حتى أتمكن من الحصول على صفحة تسجيل الدخول على الصفحة الرئيسية (Home#Index) وليس على المستخدمين/sign_in؟

أنا أستخدم Inpise 1.1.3 مع Rails 3 على Ruby 1.9.2 ، على Mac OSX Snow Leopard.

شكرًا!

هل كانت مفيدة؟

المحلول

مع ابتكار 1.1.3 يجب أن يعمل التالي

devise_for :user, :path => '', :path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" }

لن يتم إلحاق الطرق التي تنشئها بـ "/user/..." بسبب :path المعلمة كونها سلسلة فارغة. ال :pathnames سوف يهتم التجزئة بتسمية الطرق كما تريد. سيستخدم Beatise هذه الطرق داخليًا ، لذا فإن تقديم /تسجيل الدخول سيعمل كما يحلو لك ولن يأخذك إلى /user /log_in

لإضافة نموذج تسجيل دخول إلى صفحتك الأولى ، توجد معلومات في Wiki Inpistise:http://github.com/plataformatec/devise/wiki/how-to:-display-a-custom-sign_in-form-anywhere-in-your-app

أو افعل شيئًا كهذا:

 <%= form_tag new_user_session_path do %>
  <%= text_field_tag 'user[email]' %>
  <%= password_field_tag 'user[password]' %>
 <%=  submit_tag 'Login' %>

نصائح أخرى

ما يلي عمل بالنسبة لي:

  devise_for :users do
    get "/login" => "devise/sessions#new"
    get "/register" => "devise/registrations#new"
  end

لا تحتاج فقط إلى وضع مسارك الخاص في Block_for block

match '/dashboard' => 'home#dashboard', :as => 'user_root'
get "/login", :to => "devise/sessions#new" # Add a custom sign in route for user sign in
get "/logout", :to => "devise/sessions#destroy" # Add a custom sing out route for user sign out
get "/register", :to => "devise/registrations#new" # Add a Custom Route for Registrations
devise_for :user

الآن /تسجيل الدخول. /المستخدمين/sign_in أيضا.

التكوين:

  devise_scope :user do
    get 'profile/edit'    => 'devise/registrations#edit',   :as => :edit_user_registration
    get 'profile/cancel'  => 'devise/registrations#cancel', :as => :cancel_user_registration
  end

  devise_for  :users,
              :path => '',
              :path_names => {  :sign_in =>       'login',
                                :sign_out =>      'logout',
                                :sign_up =>       '',
                                :registration =>  'register',
                                :edit =>          'edit',
                                :cancel =>        'cancel',
                                :confirmation =>  'verification'  }

الطرق:

  edit_user_registration GET    /profile/edit(.:format)      devise/registrations#edit
cancel_user_registration GET    /profile/cancel(.:format)    devise/registrations#cancel
        new_user_session GET    /login(.:format)             devise/sessions#new
            user_session POST   /login(.:format)             devise/sessions#create
    destroy_user_session DELETE /logout(.:format)            devise/sessions#destroy
           user_password POST   /password(.:format)          devise/passwords#create
       new_user_password GET    /password/new(.:format)      devise/passwords#new
      edit_user_password GET    /password/edit(.:format)     devise/passwords#edit
                         PATCH  /password(.:format)          devise/passwords#update
                         PUT    /password(.:format)          devise/passwords#update
                         GET    /register/cancel(.:format)   registrations#cancel
       user_registration POST   /register(.:format)          registrations#create
   new_user_registration GET    /register(.:format)          registrations#new
                         GET    /register/edit(.:format)     registrations#edit
                         PATCH  /register(.:format)          registrations#update
                         PUT    /register(.:format)          registrations#update
                         DELETE /register(.:format)          registrations#destroy

لقد قمت بإنشاء وحدة تحكم المصادقة الخاصة بي ووحدة تحكم جلسات الاستنباط الموجه إلى وحدة التحكم الخاصة بي

devise_for :users, 
:controllers => {
    :sessions => 'auth' },

:path => '/',

:path_names => {
    :sign_in  => 'login',
    :sign_out => 'logout' }

سيقوم هذا الرمز بإضافة /تسجيل الدخول و /تسجيل URL.

المزيد عن هذا يمكنك العثور عليه في رمز المصدر http://github.com/plataformatec/devise/blob/master/lib/devise/rails/routes.rb

استخدم هذا في أعلى ملف Routes.RB

map.connect "users/:action", :controller => 'users', :action => /[a-z]+/i 

استخدم هذا في مكان ملف الفهرس الخاص بك. إذا كان على نموذج المستخدمين ، استخدم ما سبق أو قم بتغييره وفقًا لذلك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top