0

Ich habe drei Modelle ...Wie erhalten Sie die Attributwerte assoziierter Modelle in Sichten? Rails

models/resident.rb

class Resident < ActiveRecord::Base 
    belongs_to :hostel 
    has_many :leaves,dependent: :delete_all 
    has_one :user,dependent: :delete 
end 

models/user.rb

class User < ActiveRecord::Base 
    belongs_to :resident 
end 

models/leave.rb

class Leave < ActiveRecord::Base 
    belongs_to :resident 
end 

Wenn ich jetzt in Ansichten/leave/show.html.erb Ich erhalte diese den Wert des Urlaubs des Attributs zugreifen versuchen:

app/views /leaves/show.html.erb

<%= @leaves %> 

In Browser heraus setzen:

#<Leave::ActiveRecord_Associations_CollectionProxy:0x007fde611850f0> 

Mein Urlaubs-Controller wie folgt aussieht: leaves_controller.rb

class LeavesController < ApplicationController 

    def new 
    if logged_in? 
     @leave=Leave.new 
    else 
     flash[:info]="Please login to mark a leave" 
     redirect_to root_path 
    end 
    end 
    def show 
    @leaves= current_user.resident.leaves 
    end 

    def create 
    @leave=current_user.resident.leaves.create(leave_params) 
    if @leave.save 
     flash[:info] = "Leave successfully marked" 
     redirect_to new_leave_path 
    else 
     flash[:danger] = "Something wrong Happened try again" 
     redirect_to root_path 
    end 
    end 

    private 
    def leave_params 
    params.require(:leave).permit(:start_date,:end_date,:destination) 
    end 
end 

Bin ich richtig Blätter für Bewohner und damit verbundene Benutzer (create-Methode) Herstellung?

Ist show method korrekt?

und wie die Blätter des Benutzers bewerten der Blätter Ansichten in show.html.erb zuzuschreiben.

+0

tun: '@ Blätter = current_user.resident.leaves.first' zu bekommen erstes Objekt oder Schleife durch' @ Blätter = current_user .resident.leaves' in show.html um alle Blätter anzuzeigen.Als '@ leaves = current_user.resident.leaves' wird eine Sammlung zurückgegeben, kein Objekt. –

Antwort

0

Ein Bewohner has_many Blätter so current_resident.leaves gibt einen Array aller current_resident der Blätter. Sie müssen Blätter durchlaufen, um einzelne Attribute anzuzeigen. Versuchen

@leaves.first.attribute_name 

Ihrer Ansicht nach eine Vorstellung davon zu bekommen, wie die Daten dargestellt wird. Um zu zeigen, all Blätter werden Sie sie verwenden müssen, um eine Schleife in der Ansicht

@leaves.each do |leave| 
    leave.inspect 
end 
+0

danke Mann .. ich habe es .. Ich war etwas verwirrt ... –

+0

Bitte würden Sie die Antwort akzeptieren oder vote it up, wenn es geholfen hat, da ich versuche, meine Profilpunkte aufzubauen. – margo

+0

ok! fertig: D .. –

1

Sie tun alles gut, und show Methode ist in Ordnung, und die Vorlage zeigt genau, was gesagt wurde, zu zeigen.

@leaves ist eine Sammlung. Sie möchten wahrscheinlich seine Elemente zeigen? Dies sollte auf die richtige Lösung führen:

<% @leaves.each do |l| %> 
    <%= l.inspect %> 
<% end %> 
+0

danke mann ...: D –

+0

noch eine Frage zu Partials: Ich habe eine partielle _usermenu.html.erb und ich möchte es mit Ausnahme meiner Homepage zeigen. Aber meine Homepage ist dynamisch bedeutet, ändert sich mit dem Benutzer. like Wenn der Benutzer eingeloggt ist, zeigt er sein Profil an und wenn nicht, dann den Hauptinhalt der Seite. Jetzt möchte ich _usermenu.html.erb in allen außer meiner Hauptinhaltsseite anzeigen oder wenn der Benutzer angemeldet ist .. Ich habe auch die Funktion zur Identifizierung des angemeldeten Benutzers. Kann ich das partiell mit dieser Funktion rendern? aber genau weiß ich nicht, wie man es benutzt .. können Sie helfen! –

+0

Bitte posten Sie eine andere Frage. Diese Seite hat ihre eigenen Regeln. – mudasobwa