如何有条件地将引导类添加到rails

时间:2017-10-07 21:28:36

标签: ruby-on-rails ruby twitter-bootstrap ruby-on-rails-4

我在网站上有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 %>

3 个答案:

答案 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 %>