我在网站上有赞成/反对按钮,我想根据用户是否对帖子投赞成票而以不同的方式显示。我正在使用 acts_as_votable gem 来处理投票,这样我就可以得到一个带有 @user.voted_up_on 的布尔值?@post。如果用户对帖子投了赞成票,我如何有条件地将 btn-success 的引导类添加到点赞按钮中?我的点赞按钮如下所示:
<%= link_to upvote_path(:post => post), class: "btn btn-md", :method => :post do %>
<span class="glyphicon glyphicon-arrow-up"></span>
<% end %>
添加帮助程序方法:
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) %>
您可以使用 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 %>
使用条件:D
button_classes = @user.voted_up_on?(@post) ? "btn btn-md btn-success" : "btn btn-md"
或
button_classes = ["btn", "btn-md"]
button_classes.push("btn-success") if @user.voted_up_on?(@post)
并分别使用它
<%= link_to upvote_path(:post => post), class: button_classes, :method => :post do %>
<span class="glyphicon glyphicon-arrow-up"></span>
<% end %>
或
<%= link_to upvote_path(:post => post), class: button_classes.join(' '), :method => :post do %>
<span class="glyphicon glyphicon-arrow-up"></span>
<% end %>