2016-02-13 2 views
1

Я делаю вид слежения за присутствием в школе, но я столкнулся с проблемой. У меня есть два основных объекта: «Пользователь», «Событие» и «Сущность» присутствуют между ними, ограничивая их вместе. Я доступ к основному объекту в шаблоне, но мне нужно получить доступ к соответствующему между объектом для считывания состояния (если состояние присутствия 1 зеленый Б.Г., если 0 красный)Доступ между сущностью в шаблоне phoenix

Пользователя:

schema "users" do 
    field :login, :string 
    field :password, :string 

    #stuff 

    has_many :presences, Presence 
    has_many :events, through: [:presences, :event] 

    timestamps 
    end 

Событие:

schema "events" do 
    field :name, :string 

    #Stuff 

    has_many :presences, Presence, on_delete: :fetch_and_delete 
    has_many :users, through: [:presences, :user] 
end 

Наличие:

schema "presences" do 
    field :state, :integer 

    belongs_to :user, Kpsz.Model.User, foreign_key: :user_id 
    belongs_to :event, Kpsz.Model.Event, foreign_key: :event_id 

    timestamps 
end 

И моя проблема заключается в том, что я понятия не имею, как получить доступ, что STA потому что я использую такие данные.

шаблона:

<div class="row"> 
    <div class="col-lg-6"> 
    <ul> 
     <li> 
     <strong>Nazwa:</strong> 
     <%= @event.name %> 
     </li> 
     </li> 
    </ul> 
    <div class="row"> 
    <%= for user <- @event.users do %> 
     <div class="col-md-2 display-user"> 
     <div class="row"> 
      <%= user.class %> 
     </div> 
     <!-- i need access presence state here --> 
     <div user_id="<%= user.id %>" event_id="<%= @event.id %>"> 
      Potwierdz 
     </div> 
     </div> 
    <%= end %> 
    </div> 

    </div> 
    <div class="col-lg-6" id="map-container"> 
    </div> 
</div> 

И, наконец, Действие:

def show(conn, %{"id" => id}) do 
    event = Repo.get!(Event, id) |> Repo.preload([:users]) 
    render(conn, "show.html", event: event) 
end 

ответ

3

Вы можете изменить ваше для понимания, чтобы использовать presences (который будет предустановленное при поджимать пользователей.) В каждом случае присутствие будет содержать user, который вам нужен.

<%= for presence <- @event.presences do %> 
    <div class="col-md-2 display-user"> 
    <div class="row"> 
     <%= presence.user.class %> 
    </div> 
    <%= presence.state %> 
    <div user_id="<%= presence.user.id %>" event_id="<%= @event.id %>"> 
     Potwierdz 
    </div> 
    </div> 
<%= end %> 
+0

ow ... Это проще, чем я думал. Огромное спасибо. Попробуем попробовать – Haito