اذهب إلى المحتوى

السؤال

نشر

أتوفر على عدة جداول في تطبيق بداخل قاعدة بيانات على إطار العمل 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...