首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查用户投票是否可投票

检查用户投票是否可投票
EN

Stack Overflow用户
提问于 2014-11-10 18:12:33
回答 1查看 1.3K关注 0票数 1

如果用户投票选择了一张照片,并且我使用了以下代码(acts_as_votable文档),我想做一些样式上的更改:

代码语言:javascript
复制
  <% 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 %>

但这是行不通的,因为它将显示“喜欢”的所有时间,即使我没有点击喜欢的按钮。

照片控制器

代码语言:javascript
复制
def upvote
    @photo = Photo.friendly.find(params[:id])
    @photo.liked_by current_user
    redirect_to user_photo_path(@photo.user,@photo)
end

有什么不对的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-10 18:26:26

在if语句中添加附加条件

代码语言:javascript
复制
<% 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“语句,如下所示

代码语言:javascript
复制
if condition_one
  if condition_two
    if condition_three
      # do something
else
 # do something else
end 

这和

代码语言:javascript
复制
if condition_one && condition_two && condition_three
  # do something
else 
  # do something else
end

如果您发现自己陷入了嵌套的ifs模式,那么就重新考虑您在做什么。您可能需要将代码分解为辅助方法,等等。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26850195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档