0

ビューをクリーンアップするヘルパーを作成しようとしています。投稿の所有者のみが編集または削除できるようにするために作成します。

 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 を表示する方法はありますか?

前もって感謝します。

4

1 に答える 1

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
于 2013-10-30T17:03:16.773 に答える