2016-01-21 226 views
0

我已經在我的模板連接兩個表有多個條件

<% @dishes.each do |d| %> 
<div class="card"> 
    <img src="<%= d.image_url %>" alt=""> 
    <a href="/dishes/<%= d.id %>"><p><%= d.name %></p></a> 
    <p><%= d.dish_type.name if d.dish_type %></p> 
    <h4>@ <%= d.venue %></h4> 

    <form action="/likes/<%= d.id %>" method="post"> 
     <button <%= 'disabled' if d.likes.where(user_id: current_user.id) %>>Like</button> 
     <p>Count: <%= d.likes.count %></p> 
    </form> 

當用戶點擊「喜歡」按鈕,我應該禁用按鈕我所試圖實現的是下面的代碼。

我有三個桌子的菜,用戶,喜歡。喜歡將包含dish_id和user_id的表作爲外鍵。你可以說多對多的關係,其中喜歡是一個聯結表。

我是activerecord我已經建立了所有連接,belongs_to和has_many關係,它們都很好。

我現在面臨的問題是,在這一行

<button <%= 'disabled' if d.likes.where(user_id: current_user.id) %>>Like</button> 

莫名其妙的連接條件不工作,它總是計算爲true。我嘗試了不同的變體,比如使用「連接」,但沒有任何變化。 任何幫助表示讚賞。請讓我知道是否需要更多信息?

回答

0

我認爲它總是計算爲true,因爲where子句返回一個活動的記錄關係對象。

如果你想獲得真或假的,你可以使用特定的查詢「存在嗎?」:

d.likes.exists?(user_id: current_user.id) 

如果在數據庫中存在的記錄,你會得到真正否則返回False。