2016-02-14 7 views
0

У меня проблема с вложенным методом удаления для вспомогательного помощника link_to.Rails 4.2.5 link_to delete метод

Вот мои маршруты:

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 в качестве аргумента ресторана, который собирается создать ссылку с неправильным идентификатором.

Вы должны дать ему ресторан (или идентификатор ресторана) и обзор, а не пользователь и идентификатор отзыва, как и в предыдущей строке с ссылкой на редактирование.

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

@Philip Да, поскольку он удаляется, а затем вы ничего не делаете *. Вам нужно либо сделать рендеринг, либо перенаправить куда-нибудь. – meagar

+0

Спасибо, заработал. Я должен перенаправить мой контроллер – Philip

+0

Это должно быть принято, если оно сработало. –