2016-02-14 95 views
0

我有link_to帮助程序的嵌套删除方法的问题。Rails 4.2.5 link_to删除方法

这里是我的路线:

resources :restaurants, only: [:new, :show, :edit, :index,:create] do 
    resources :reservations, only: [:new, :show, :edit, :index, :create] 
    resources :reviews 
end 

这里是我的检讨控制器动作:

def destroy 
    @review = Review.find(params[:id]) 
    @review.destroy 
end 

和我的user#show代码:

<div class="panel-body"> 
<h1> <%= pluralize(@user.reviews.count ,'review') %> from <%=  @user.name %> </h1> 
    <% @user.reviews.order(created_at: :desc).each do |review| %> 
    <ul> 
     <li><em>Review for restaurant: </em><%= review.restaurant.name %></li> 
     <em>Review comment: </em> <%= review.comment %></br> 
     <%= link_to 'edit comment', edit_restaurant_review_path(review.restaurant_id, review.id) %> 
     <%= link_to 'delete comment', restaurant_review_path(@user, review.id) , method: :delete, data:{confirm:"are you sure you want to delete this review"} %> 
    </ul> 
    <% end %> 
</div> 

这里是我的路线:

restaurant_reviews GET /restaurants/:restaurant_id/reviews(.:format)    reviews#index 
         POST /restaurants/:restaurant_id/reviews(.:format)    reviews#create 
    new_restaurant_review GET /restaurants/:restaurant_id/reviews/new(.:format)   reviews#new 
edit_restaurant_review GET /restaurants/:restaurant_id/reviews/:id/edit(.:format)  reviews#edit 
     restaurant_review GET /restaurants/:restaurant_id/reviews/:id(.:format)   reviews#show 
         PATCH /restaurants/:restaurant_id/reviews/:id(.:format)   reviews#update 
         PUT /restaurants/:restaurant_id/reviews/:id(.:format)   reviews#update 
         DELETE /restaurants/:restaurant_id/reviews/:id(.:format)   reviews#destroy 

我似乎无法删除我的评论。我传递了错误的变量吗? 到'restaurant_review_path'?我的路线似乎是对的。因为我的编辑link_to帮手正在工作。

回答

2

restaurant_review_path(@user, review.id)是错误的。您传递@user作为餐厅参数,该参数将生成带有错误ID的链接。

你应该给它一个餐厅(或餐厅ID)和一个评论,而不是一个用户和一个评论ID,就像你在编辑链接上一行所做的一样。

restaurant_review_path(review.restaurant_id, review.id) 
+0

@Philip是的,因为它删除,然后你不*做任何事*。您需要创建一个视图来呈现或重定向某处。 – meagar

+0

谢谢,让它工作。我应该在我的控制器中重定向 – Philip

+0

这应该被接受,如果它的工作。 –