سؤال

على الرغم من كل الأسئلة والحلول التي قرأتها حتى الآن، لم ينجح شيء بالنسبة لي حتى الآن، حيث تظهر صفحة ملف تعريف المستخدم الذي تم تسجيل دخوله مع التصميم.لقد جربت عددًا من الأشياء في طرقي أيضًا.يظهر الخطأ حاليًا - "تعذر العثور على مستخدم بدون معرف".أنا مبتدئ في مجال التصميم، لذا على الرغم من إعجابي به، إلا أنه كان محبطًا بعض الشيء.سيكون موضع تقدير أي مساعدة.لا يزال كثيرا في مراحل التعلم.شكرًا.

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 لإظهار ملف تعريف المستخدم الذي قام بتسجيل الدخول فقط، أود إضافة إجراء تحكم (يسمى ملف التعريف على سبيل المثال) ثم تعيين/الحصول على متغير جلسة بمعرف المستخدم وإعادة التوجيه إلى عرض المستخدم.

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