2016-02-13 36 views
1

我正在做一种学校存在跟踪器,但我遇到了问题。我有两个主要的实体用户,事件和实体存在于它们之间,将它们绑定在一起。我访问的主要实体模板,但我需要访问相关的实体之间的阅读状态(如果存在状态1绿色BG如果0红色)在凤凰模板中的实体之间访问

用户:

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