2016-04-12 3 views
-3

私はレールが新しく、私のプロジェクトでは、2つのクラスがあります。問題は、彼らは臓器でサービスを挙げることができないということです。あなたは(たとえば、あなたのケースでは、サービスとしての)関係のメソッドを呼び出すのmongo関係上のすべて:クラスレール間のリンク

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%> 

これは私が

+0

スタックトレースを表示してください。 – born4new

+0

このアプローチで得られる特定のエラーに関する情報を追加してください。 – ZubatMan

+0

<%= organs.services.name%>これは "Service"という名前を返します。私はサービスの名前を返す人がほしい。 –

答えて

0

注それを実行するたびにエラーを返すことが表示されます。以下は、私が持っているコードです。それに関連付けられているドキュメントが返されます。また、あなたが使用しているページ分割プラグイン(私は文法によってkaminariを仮定しています)に対して、これはドキュメントのコレクションを同様に返します。あなたが最初のハンドルを持っている必要なサービスをプリントアウトすることに気付くでしょう

<% @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 %> 

もしそうなら、あなたがこのような少し何かを持っている臓器のビューを持っていることを期待することができ@organs内の現在のドキュメント上にあるので、その中のサービスを反復処理する必要があります。あなたが名前(これは関係の方法です)を呼び出す場合、あなたは関係の名前を取得します(私はこれがあなたが見ていると信じています)。

こちらがお役に立てば幸いです。私はラインの間でいくつかの推測をしなければならなかった、あなたがそれ以上の助けを必要とするなら私に戻って来てください。

関連する問題