2017-10-07 26 views
0

我有一個站點上的upvote/downvote按鈕,我希望根據用戶是否投了帖子來顯示不同的按鈕。我使用acts_as_votable gem來處理投票,所以我可以通過@ user.voted_up_on獲得一個布爾值? @post。如果用戶已投稿帖子,如何有條件地將btn-success的引導類添加到upvote按鈕? 我給予好評按鈕看起來是這樣的:如何有條件地嚮導軌中的按鈕添加引導類

<%= link_to upvote_path(:post => post), class: "btn btn-md", :method => :post do %> 
    <span class="glyphicon glyphicon-arrow-up"></span> 
<% end %> 

回答

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) %> 
+0

廠使用, 謝謝!! – RT5754

0

使用條件語句:d

button_classes = @user.voted_up_on?(@post) ? "btn btn-md btn-success" : "btn btn-md" 
分別

<%= link_to upvote_path(:post => post), class: button_classes, :method => :post do %> 
    <span class="glyphicon glyphicon-arrow-up"></span> 
<% end %> 

或或

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.join(' '), :method => :post do %> 
    <span class="glyphicon glyphicon-arrow-up"></span> 
<% end %> 
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 %>