2016-12-20 9 views
0

ユーザーのプロファイルページで、ユーザーが投稿を作成できます。私は最近、ユーザーが自分の投稿を削除するための削除リンクを追加しました。しかし、問題は、個々の投稿はすべての投稿のすべての削除リンクを表示しています。重複削除リンク

Example: So if Jimmy has 3 posts, each post will have 3 delete links

削除リンクは、私はちょうどそれは、個々の投稿のに表示される右のいずれかを必要とし、正常に動作します。

は、ここに私のコードです:

posts_controller.rb

class PostsController < ApplicationController 
 
    
 
    def index 
 
    @posts = Post.allow 
 
    end 
 
    
 
    def new 
 
     @post = Post.new 
 
    end 
 
    
 
    def create 
 
     @post = Post.new(post_params) 
 
     @post.user_id = current_user.id # assign the post to the user who created it. 
 
     respond_to do |f| 
 
      if (@post.save) 
 
       f.html { redirect_to "", notice: "Post created!" } 
 
      else 
 
       f.html { redirect_to "", notice: "Error: Post Not Saved." } 
 
      end 
 
     end 
 
    end 
 
    
 
    def destroy # users can delete their own posts 
 
    @post = Post.find(params[:id]) 
 
    if current_user == @post.user 
 
     @post.destroy 
 
    end 
 
    redirect_to root_path 
 
    end 
 
    
 
    private 
 
    def post_params # allows certain data to be passed via form. 
 
     params.require(:post).permit(:user_id, :content) 
 
     
 
    end 
 
    
 
end

profile.html.erb

<div class="row"> 
 
    <div class="col-xs-12"> 
 
     <div class="jumbotron"> 
 
      <%= @username %> 
 
     </div> 
 
    </div> 
 
</div> 
 
<!-- row 2 --> 
 
<div class="row"> 
 
    <div class="col-xs-3"> 
 
     <div class="panel panel-default"> 
 
      <div class="panel-body"> 
 
       avatar 
 
      </div> 
 
     </div> 
 
    </div> 
 
    <div class="col-xs-6"> 
 
     <%= render '/components/post_form' %><br> 
 
     <% for @p in @posts %> 
 
     <div class="panel panel-default post-panel"> 
 
      <div class="panel-body row"> 
 
      <div class="col-sm-1"> 
 
       <img src="/avatar.png" class="post-avatar" height="50px" width="50px"></img> 
 
      </div> 
 
      <div class="col-sm-11"> 
 
       <p class="post-title"><span class="post-owner"><a href="/user/<%= User.find(@p.user_id).username %>"><%= User.find(@p.user_id).name %></a></span> <span class="post-creation">- <%= @p.created_at.to_formatted_s(:short) %></span></p> 
 
       <p class="post-content"><%= @p.content %></p> 
 
      </div> 
 
      <div class="col-sm-12"> 
 
       <p class="post-links"> 
 
       <span class="glyphicon glyphicon-comment g-links" aria-hidden="true"></span> 
 
       <span class="glyphicon glyphicon-retweet g-links" aria-hidden="true"></span> 
 
       <span class="glyphicon glyphicon-heart g-links" aria-hidden="true"></span> 
 
       <span class="glyphicon glyphicon-option-horizontal g-links" aria-hidden="true"></span> 
 
       <% if user_signed_in? %> 
 
       <% @posts.each do |post| %> 
 

 
       <%= link_to 'Delete', post, method: :delete, data: { confirm: 'Are you sure?' } %> 
 

 
       <% end %> 
 
       <% end %> 
 
      </p> 
 
      </div> 
 
      </div> 
 
     </div> 
 
     <% end %> 
 
    </div> 
 
    <div class="col-xs-3"> 
 
     <div class="panel panel-default"> 
 
      <div class="panel-body"> 
 
       <p>who to follow</p> 
 
      </div> 
 
     </div> 
 
     <div class="panel panel-default"> 
 
      <div class="panel-body"> 
 
       <p>trends</p> 
 
      </div> 
 
     </div> 
 
    </div> 
 
</div>

この問題を解決するにはどうすればよいですか?前もって感謝します!私が見たよう

+0

あなたはループしています。 rすべての投稿はループ内にリンクを削除して投稿を表示する – Iceman

答えて

0

問題が​​である:

<% if user_signed_in? %> 
    <% @posts.each do |post| %> 
    <%= link_to 'Delete', post, method: :delete, data: { confirm: 'Are you sure?' } %> 
    <% end %> 
<% end %> 

@posts.eachループを削除し、次のように置き換えます。

<%= link_to 'Delete', @p, method: :delete, data: { confirm: 'Are you sure?' } %> 
0

、あなたが 1. for @p in @posts 2. @post.each do |post| @postのための2つのループを持っており、各ループはforループの内側にある