我在网站上有upvote / downvote按钮,我希望以不同的方式显示,具体取决于用户是否对该帖子进行了投票。我正在使用acts_as_votable gem来处理投票,所以我可以用@ user.voted_up_on得到一个布尔值? @post。如果用户对帖子进行了投票,我如何有条件地将btn-success的bootstrap类添加到upvote按钮? 我的upvote按钮看起来像这样:
<%= link_to upvote_path(:post => post), class: "btn btn-md", :method => :post do %>
<span class="glyphicon glyphicon-arrow-up"></span>
<% end %>
答案 0 :(得分:1)
添加辅助方法:
def upvote_link(user, post)
if user.voted_up_on?(post)
btn_class = "btn btn-md btn-success"
else
btn_class = "btn btn-md"
end
link_to upvote_path(:post => post), class: btn_class, :method => :post do
concat content_tag(:span, "", class: "glyphicon glyphicon-arrow-up")
end
end
并在视图中使用
<%= upvote_link(@user, @post) %>
答案 1 :(得分:0)
使用条件:D
<%= link_to upvote_path(:post => post), class: button_classes.join(' '), :method => :post do %>
<span class="glyphicon glyphicon-arrow-up"></span>
<% end %>
或
{{1}}
分别使用它
{{1}}
或
{{1}}
答案 2 :(得分:0)
您可以使用if语句根据您的布尔值显示不同的HTML
<% btn_class = "btn btn-md" %>
<% btn_class = "btn btn-md btn-success" if @user.voted_up_on?(@post) %>
<%= link_to upvote_path(:post => post), class: btn_class, :method => :post do %>
<span class="glyphicon glyphicon-arrow-up"></span>
<% end %>