如果用户投票选择了一张照片,并且我使用了以下代码(acts_as_votable文档),我想做一些样式上的更改:
<% if current_user.voted_for? @photo %>
<%= link_to like_photo_path(@photo), method: :put do %>
<button>
¡Liked!
</button>
<% end %>
<% else %>
You dont like it yet
<% end %>但这是行不通的,因为它将显示“喜欢”的所有时间,即使我没有点击喜欢的按钮。
照片控制器
def upvote
@photo = Photo.friendly.find(params[:id])
@photo.liked_by current_user
redirect_to user_photo_path(@photo.user,@photo)
end有什么不对的吗?
发布于 2014-11-10 18:26:26
在if语句中添加附加条件
<% if current_user.voted_for? @photo && @photo.liked_by current_user %>
# different text
<% elsif current_user.voted_for? @photo %>
<%= link_to like_photo_path(@photo), method: :put do %>
<button>
¡Liked!
</button>
<% end %>
<% else %>
You dont like it yet
<% end %>这是一种非常常见的设计模式,它基本上符合下一个逻辑默认值。
注意,如果您发现自己嵌套了" if“语句,如下所示
if condition_one
if condition_two
if condition_three
# do something
else
# do something else
end 这和
if condition_one && condition_two && condition_three
# do something
else
# do something else
end如果您发现自己陷入了嵌套的ifs模式,那么就重新考虑您在做什么。您可能需要将代码分解为辅助方法,等等。
https://stackoverflow.com/questions/26850195
复制相似问题