• 0

كيف أظهر محتوى حقل في رابطة بين عدة جداول على إطار العمل Rails؟

أتوفر على عدة جداول في تطبيق بداخل قاعدة بيانات على إطار العمل Rails، وأريد إظهار حقل انطلاقا من ربط بعض الجداول.

أتوفر على المتغير  post@:

@post = Post.paginate(page: params[:page], :per_page => 10).order('job_view_count DESC')

وأريد تصفحه من خلال حلقة التكرار التالية داخل view:

<% @post.each do |p| %>
  <%= p.jpost_title %>
  <%= p.company_id %> # I want to show company_name on this place
  <%= p.post_location %>
<% end %>

ملف Model الخاص بـuser:

class User< ActiveRecord::Base
   has_many :posts, :foreign_key => :company_id
   has_many :companies
 end

 class Post < ActiveRecord::Base
   belongs_to :user
   belongs_to :company
 end

لكن أجد مشكل في استعمال company_id، هل من حل للمشكل؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

 

<% @post.each do |p| %>
  <%= p.jpost_title %>
  <%= p.company.company_name %>
  <%= p.post_location %>
<% end %>

عليك استعمال delegate في رابط الجدولين، بهذا الشكل:

#app/models/post.rb
class Post < ActiveRecord::Base
   belongs_to :company
   delegate :company_name, to: :company #-> @post.company_name
end

مما يسمح لك باستخدام:

<% @post.each do |p| %>
  <%= p.jpost_title %>
  <%= p.company_name %>
  <%= p.post_location %>
<% end %>

وحتى أضعك في الصورة بشكل وجيد، أظر إلى الرسم التالي المبين لبنية الجداول-كمثال- داخل قاعدة البيانات:

post.company@ وجب التأكد من استعمال رابط بين الجدولين.

يمكن الوصول إلى company عن طريق id ومن ثم اسنخراج جميع معلوماتها:

zTPt0.thumb.jpg.ea08d541deb84998330b6b73

للحصول على نتيجة عند استعمال post.company@ يجب التأكد من استعمال رابط بين الجدولين.

يمكن الوصول إلى company عن طريق id ومن ثم استخراج جميع معلوماتها:

@post.company_id #-> 1
@post.company.company_name #-> "Test"

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن