وضع طرق مخصصة وصفحات تسجيل الدخول
-
26-09-2019 - |
سؤال
أحاول الحصول على طرق مخصصة تعمل في تطبيق 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
استخدم هذا في مكان ملف الفهرس الخاص بك. إذا كان على نموذج المستخدمين ، استخدم ما سبق أو قم بتغييره وفقًا لذلك