Rails - So zeigen Sie das Attribut eines zugeordneten Modells an

Ich versuche, eine App in Rails 4 zu erstellen.

Ich habe gerade diese verwandte Frage gestellt und eine klare Antwort erhalten. Es scheint, als ob ich nicht verstehen kann, wie ich diese Logik anderswo anwenden kann.

Rails So zeigen Sie Attribute eines übergeordneten Objekts an

Ich habe ein Benutzermodell, ein Profilmodell, ein Projektmodell und ein Hochschulmodell.

Verbände sind:

Profile belongs to university
Profile belongs to user
University has many profiles
University has many projects
Projects HABTM user
Projects belong to universities

In meinem Projektcontroller definiere ich @creator wie folgt:

def create
    logger.debug "xxx create project"
    #authorise @project
    @project = Project.new(project_params)
    @project.creator_id = current_user.id
    @project.users << current_user
    respond_to do |format|
      if @project.save

        format.html { redirect_to @project }
        format.json { render action: 'show', status: :created, location: @project }
      else
        format.html { render action: 'new' }
        format.json { render json: @project.errors, status: :unprocessable_entity }
      end
    end
  end

Ich versuche, creator_profile so zu definieren:

def show
    #authorise @project

    @project = Project.find(params[:id])
    @creator = User.find(@project.creator_id)
    @creator_profile = @creator.profile

  end

In meiner Uni-Tabelle habe ich Attribute namens Logo und Name. Ich verwende einen Avatar-Uploader, in dem ich ein Logo definiert habe (deshalb habe ich unten zwei .logo).

Zeigen Sie in meinen Projekten, dass ich die Universität anzeigen möchte, zu der der Projektersteller gehört.

Ich habe es versucht:

<%= image_tag(@creator_profile.university.logo.logo) %> 
        <div class="generaltext"><%= @creator_profile.university.name %> </div>

Ich erhalte das Ergebnis: undefined method `logo 'for nil: NilClass

Auf der Grundlage des Links zu meinem Problem oben

<%= image_tag(creator_profile.university.logo.logo) %> 
            <div class="generaltext"><%= creator_profile.university.name %> </div>

Ich erhalte dieses Ergebnis:

undefined local variable or method `creator_profile' for #<#<Class:0x007f998f17ad88>:0x007f998d1ce318>

Ich bin mir nicht sicher, ob ich die sehr detaillierten Erklärungen in der Antwort auf meine vorherige Frage verstanden habe. Wenn die erste Version richtig ist, verstehe ich die Erklärung überhaupt nicht. Wenn die zweite Version richtig ist, warum erscheint dann diese Fehlermeldung?

Ich frage mich, ob das Problem dadurch entsteht, dass es keine Verbindung zwischen Universität und Benutzer gibt. Ich hatte gehofft, basierend auf dem Benutzer, der das Projekt erstellt hat, die Uni zu finden, zu der der Ersteller gehört.

Deshalb habe ich versucht:

<%= image_tag(creator_profile.project.university.logo.logo) %> 
                <div class="generaltext"><%= creator_profile.project.university.name %> </div>

Ich erhalte diesen Fehler:

undefined method `project' for #<Profile:0x007f998ada41b8>

Antworten auf die Frage(4)

Ihre Antwort auf die Frage