اذهب إلى المحتوى
  • 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، هل من حل للمشكل؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 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"
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...