ابتكار عرض المستخدم
-
20-12-2019 - |
سؤال
على الرغم من كل الأسئلة والحلول التي قرأتها حتى الآن، لم ينجح شيء بالنسبة لي حتى الآن، حيث تظهر صفحة ملف تعريف المستخدم الذي تم تسجيل دخوله مع التصميم.لقد جربت عددًا من الأشياء في طرقي أيضًا.يظهر الخطأ حاليًا - "تعذر العثور على مستخدم بدون معرف".أنا مبتدئ في مجال التصميم، لذا على الرغم من إعجابي به، إلا أنه كان محبطًا بعض الشيء.سيكون موضع تقدير أي مساعدة.لا يزال كثيرا في مراحل التعلم.شكرًا.
class UsersController < ApplicationController
before_filter :authenticate_user!, :except => [:show]
after_action :verify_authorized
def index
@users = User.all
authorize User
end
def show
@user = User.find(params[:id])
authorize @user
end
الطرق
Rails.application.routes.draw do
devise_for :users
devise_scope :user do
get 'users/sign_in' => 'devise/sessions#new'
get 'users/sign_out' => 'devise/sessions#destroy'
end
resources :user
match 'users/show', to: 'users#show', via: 'get'
root to: 'pages#home'
end
المحلول
match 'users/show', to: 'users#show', via: 'get'
يشير هذا السطر إلى أنه سيوجه عنوان url users/show
إلى وحدة التحكم الخاصة بك #action users#show
.وداخل وحدة التحكم الخاصة بك، فأنت تبحث عن المستخدم بمعرف params[:id]
.باستثناء أنك لا تقوم أبدًا بتمرير معلمة معرف.عادةً، يتم تمرير المعرف في عنوان url (على سبيل المثال users/show/:id
).وهذا هو سبب خطأك.
الحل يعتمد على ما تحاول تحقيقه.يمكنك إما تمرير المعرف من خلال عنوان url، أو إذا كنت تريد users/show
لإظهار ملف تعريف المستخدم الذي قام بتسجيل الدخول فقط، أود إضافة إجراء تحكم (يسمى ملف التعريف على سبيل المثال) ثم تعيين/الحصول على متغير جلسة بمعرف المستخدم وإعادة التوجيه إلى عرض المستخدم.