我的模板中有以下代码
<% @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作为外键。你可以说很多关系,喜欢是一个联结表。我是主动记录我已经设置了所有连接和belongs_to和has_many关系,它们都很好。
我面临的问题是在这一特定行
<button <%= 'disabled' if d.likes.where(user_id: current_user.id) %>>Like</button>
以某种方式连接条件不起作用,它总是计算为true。我尝试了不同的变体,比如使用'join',但是没有任何东西可以正常工作。 任何帮助表示赞赏。如果需要进一步的信息,请告诉我?
答案 0 :(得分:0)
我认为它总是求值为true,因为where子句返回一个活动的记录关系对象。
如果您想从该特定查询中获得真或假,您可以使用“exists?”:
$.map(inputs, function(e) {
return (e.length > 0);
}).indexOf(false) == -1;
如果数据库中存在记录,则会返回True,否则为False。