如何有条件地将引导类添加到轨道中的按钮



我在网站上有赞成/反对按钮,我想根据用户是否对帖子投赞成票而以不同的方式显示。我正在使用 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 %>

最新更新