2013-10-30 34 views
0

我正在嘗試創建幫助程序來清理我的視圖。我創建一個只允許文章的所有者編輯或刪除它。幫助程序中的多個link_to不會顯示出來

module ConversationsHelper 

    def editing_for_current_user (convo) 
    if current_user == convo.user 
     link_to 'Edit', edit_conversation_path(convo), class: 'btn btn-primary btn-sm' 
     link_to 'Delete', convo, method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-primary btn-sm' 
    end 
    end 
end 

這是我的看法:

<div class="row"> 
<% @conversations.each do |conversation| %> 
    <div class="col-sm-6 col-md-4"> 
     <div class="thumbnail"> 
      <h3><%= link_to conversation.title, conversation %></h2> 
      <p>Comments: <span class='badge'><%= conversation.comments.count %></span></p> 
      <p><%= conversation.description %></p> 
      <p><b>Submitted by:</b> <%= link_to conversation.user.username, user_path(conversation.user.id) %></p> 
      <h3> Recent comments: </h3> 
      <hr> 
      <% conversation.comments.sort_by{|t| - t.created_at.to_i}.take(3).each do |c| %> 
       <div class='media'> 
        <%= image_tag c.user.profile_pic.url(:thumb), class: 'media-object pull-left img-polaroid' %> 
        <div class='media-body'> 
        <h4 class='media-heading'><%= link_to c.user.username, user_path(c.user.id) %><small> @ <%=c.created_at.strftime("%m/%d/%Y at %I:%M%p") %></small></h4> 
        <%= simple_format(c.message) %> 
        </div> 
       </div> 
       <hr> 
       <% end %> 
      <%= editing_for_current_user(conversation) %> 
     </div> 
    </div> 
<% end %> 


但是,只有 '刪除' 鏈接顯示出來。有沒有辦法顯示這兩個link_to的,而不創建另一種方法?

在此先感謝。

+0

我解決了這個問題。我無法發佈答案,因爲我總共n00b。 –

回答

0

這種事情是在局部更好的處理。你需要的是在您的視圖目錄中的另一個文件是這樣的:

_edit_links.html.erb

<%= link_to 'Edit', edit_conversation_path(conversation), class: 'btn btn-primary btn-sm '%> 
<%= link_to 'Delete', conversation, method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-primary btn-sm' %> 

然後在您的談話節目(或任何文件,你必須有):

<%= render "edit_links" if current_user == conversation.user %> 

當您想要將您的展示頁面上的內容分開以使其更具可讀性和/或可維護性時,應使用部分內容。當你有更多複雜的方法時,助手是很有用的。例如,如果你正在檢查一個對象是否屬於多次簽名的人,你可以寫一個這樣的幫助方法:

def belongs_to_current_user rec 
    current_user == rec.user 
end 
+0

您的解決方案比我的更好。謝謝! –

相關問題