2016-04-12 20 views
-3

Raylara yeniyim ve projemde bunlarla bir ilişkisi olan 2 sınıfım var. Sorun, organlarla hizmetleri listeleyememeleri. (örneğin sizin durumunuzda hizmetleri gibi) bir ilişki yöntemini çağırın Mongo ilişkileri üzerinde hepsi:Sınıf rayları arasındaki bağlantılar

modelos 

class Admin::Organ 
    include Mongoid::Document 
    include Mongoid::Search 
    include Mongoid::Pagination 

    field :name, type: String 
    field :address, type: String 
    field :acronym, type: String 
    field :phones, type: String 
    field :emails, type: String 
    field :image, type: String 
    field :permalink, type: String 
    field :schedules, type: Array 
    field :coordinates, type: Hash 

    has_many :services, class_name: "Service" 
    has_many :units, class_name: "Admin::Unit" 

    before_save :touch_permalink 

    search_in :name 

    paginates_per 10 

    def url 
    "/orgao/#{permalink}" 
    end 

    private 
    def touch_permalink 
     self.permalink = self.name.parameterize 
    end 
end 



class Service 
    include Mongoid::Document 
    include Mongoid::Search 
    include Mongoid::Pagination 

    field :name, type: String 
    field :acronym, type: String 
    field :popular_names, type: Array 
    field :description, type: String 
    field :free, type: Boolean 
    field :applicants, type: Array 
    field :estimated_time, type: Hash 
    field :steps, type: Array 
    field :permalink, type: String 
    field :other_informations, type: String 

    belongs_to :organ, class_name: "Admin::Organ" 
    has_and_belongs_to_many :units, class_name: "Admin::Unit" 
    has_and_belongs_to_many :audiences, class_name: "Admin::Audience" 
    has_and_belongs_to_many :categories, class_name: "Admin::Category" 

    before_save :touch_permalink 

    search_in :name, :popular_names 

    paginates_per 10 

    def organ_id 
     read_attribute(:organ_id).to_s 
    end 

    def url 
     "/servico/#{permalink}" 
    end 

    private 
     def touch_permalink 
     self.permalink = self.name.parameterize 
     end 
end 


#controlers 
class ServicesController < ApplicationController 
    def index 
     @organs = Admin::Organ.all 
     @services = Service.page(params[:page].to_i).per(3) 
    end 

    def show 
     @service = Service.where(permalink: params[:permalink]).first 

    end 
end 


class OrgansController < ApplicationController 
    def index 
     @organs = Admin::Organ.page(params[:page]).per(2)  
    end 

    def show 
     @organ = Admin::Organ.where(permalink: params[:permalink]).first 
     @organs = Admin::Organ.page(params[:page]).per(1) 
    end 
end 

#call in index.html 
<%= organs.services.name%> 

Bu benim

+0

Lütfen stacktrace'i gösterin. – born4new

+0

Bu yaklaşımla aldığınız belirli hata hakkında herhangi bir bilgi ekleyebilir misiniz – ZubatMan

+0

<% = organs.services.name%> bu "Servis" adını döndürün! Servisin adını kimin iade ettiğini istiyorum. –

cevap

0

Not çalıştırmak her bir hata geri döndü gibi durmaktadır: Aşağıdaki Ben koddur onunla ilişkili belgelerin iade edilir. Ayrıca kullandığınız sayfalandırma eklentisi için (sözdizimiyle kaminari'yi varsayıyorum), bu da bir belge koleksiyonu getirecektir. Sen önce bir tanıtıcı olması gerekir hizmetler yazdırmak için fark edeceksiniz

<% @organs.each do |organ| %> 
    <div>Name: <%= organ.name %></div> 
    <div>Address: <%= organ.address %></div> 
    <div>Services:</div> 
    <% organ.services.each do |service| %> 
     <div>Name: <%= service.name %></div> 
     <div>Acronym: <%= service.acronym %></div> 
    <% end %> 
<% end %> 

<%= paginate @organs %> 

:

Öyleyse, böyle bir şeyler vardır organları için bir görünümüne sahip beklenebilir @organs içindeki mevcut belgede ve ardından içindeki hizmetleri tekrarlamanız gerekir. Eğer ismi çağırırsanız (ki bu bir ilişki metodu) ilişki ismini alacaksınız (Bence gördüğünüz şey budur).

Umarım bu yardımcı olur. Hatlar arasinda bazi tahminler yapmak zorunda kaldim, daha fazla yardıma ihtiyaciniz olursa bana geri dönün.