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

كيف أفلتر حقول مترابطة على متحكم Controllers على Rails؟

سعاد

السؤال

على إطار العمل Rails لدي Models هما Article وَ Comment بعلاقة one-to-many.

الواجهة view:

<% @articles.each do |article| %>
  <% article.comments.each do |comment| %>
    some content
  <% end %>
<% end %>

جلب articles عن طريقة المتغير articles@ :

@articles = Article.order('created_at asc').last(4)

أريد عمل فلتر للتعليقات داخل الواجهة:

<% @articles.each do |article| %>
  <% article.comments.order('created_at asc').last(4).each do |comment| %>
    some content
  <% end %>
<% end %>

لكن لا أستطيع  عمل (4)order('created_at asc').last داخل الواجهة، فكيف أتمكن من فعل ذلك داخل Controller؟

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

Recommended Posts

  • 0

داخل model عليك بإضافة العلاقة has_many والتي تربط جدول article  بجدول comments:

Class Article < ActiveRecord::Base
  has_many :comments, -> { order 'created_at' } do
    def recent
      limit(4)
    end
  end
end

لتتمكن من استعمال articles بالطريقة التالية:

@articles.each do |article| 
    article.comments.recent.each do |comment|
        stuff
    end
end

هذا مثال آخر، يتعلق بصورة'Picture'والتعليقات'comments' الخاصة بها:

Class Picture < ActiveRecord::Base
  has_many :comments, :order => 'id DESC' do
    def recent
      limit(10)
    end
  end
end

 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...