2016-01-05 4 views
0

Я сделал простое приложение блог в рельсах и когда я попытался дать ссылку, чтобы удалить комментарий по рельсам дал мне неверную ссылкуRails «link_to» дает неправильный путь для удаления вложенного ресурса

<a data-method="delete" href="/forums/27/comment.7" rel="nofollow">Delete</a> 

Это дало мне ошибка

No route matches [DELETE] "/forums/27/comment.7" 

, но когда я изменил его на

<a data-method="delete" href="/forums/27/**comments/7**" rel="nofollow">Delete</a> 

по Хрома Проверьте, что удален м y комментарий. Итак, как создать правильную ссылку?

Контроллер

def destroy 
    @comment.destroy 
    redirect_to :back 
end 

private 

    def find_forum 
    @forum = Forum.find(params[:forum_id]) 
    end 

    def set_comment 
    @comment = Comment.find(params[:id]) 
    end 

show.html.haml

- @forum.comments.each do |c| 
    = c.user.firstname 
    = c.comment 
    - if user_signed_in? 
    - if c.user == current_user 
     = link_to "Delete", [@forum, c], method: :delete 

Маршруты

    Prefix Verb URI Pattern         Controller#Action 
       forum_like PUT /forums/:forum_id/like(.:format)    forums#like 
      forum_unlike PUT /forums/:forum_id/unlike(.:format)   forums#unlike 
      forum_comment PUT /forums/:forum_id/comment(.:format)   forums#comment 
      forum_comments GET /forums/:forum_id/comments(.:format)   comments#index 
         POST /forums/:forum_id/comments(.:format)   comments#create 
     new_forum_comment GET /forums/:forum_id/comments/new(.:format)  comments#new 
     edit_forum_comment GET /forums/:forum_id/comments/:id/edit(.:format) comments#edit 
         GET /forums/:forum_id/comments/:id(.:format)  comments#show 
         PATCH /forums/:forum_id/comments/:id(.:format)  comments#update 
         PUT /forums/:forum_id/comments/:id(.:format)  comments#update 
         DELETE /forums/:forum_id/comments/:id(.:format)  comments#destroy 
        forums GET /forums(.:format)        forums#index 
         POST /forums(.:format)        forums#create 
       new_forum GET /forums/new(.:format)       forums#new 
       edit_forum GET /forums/:id/edit(.:format)     forums#edit 
        forum GET /forums/:id(.:format)       forums#show 
         PATCH /forums/:id(.:format)       forums#update 
         PUT /forums/:id(.:format)       forums#update 
         DELETE /forums/:id(.:format)       forums#destroy 
     new_user_session GET /users/sign_in(.:format)      devise/sessions#new 
      user_session POST /users/sign_in(.:format)      devise/sessions#create 
    destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy 
      user_password POST /users/password(.:format)      devise/passwords#create 
     new_user_password GET /users/password/new(.:format)     devise/passwords#new 
     edit_user_password GET /users/password/edit(.:format)    devise/passwords#edit 
         PATCH /users/password(.:format)      devise/passwords#update 
         PUT /users/password(.:format)      devise/passwords#update 
cancel_user_registration GET /users/cancel(.:format)      registrations#cancel 
     user_registration POST /users(.:format)        registrations#create 
    new_user_registration GET /users/sign_up(.:format)      registrations#new 
    edit_user_registration GET /users/edit(.:format)       registrations#edit 
         PATCH /users(.:format)        registrations#update 
         PUT /users(.:format)        registrations#update 
         DELETE /users(.:format)        registrations#destroy 
        root GET /           forums#index 

ответ

1

Вы должны использовать forum_comment_path помощника:

= link_to "Delete", forum_comment_path(@forum, c), method: :delete 
+0

Это дало ту же ошибку: никаких совпадений маршрутов [DELETE] "/forums/25/comment.16". Я использовал это как временное решение: - del_path = "/ форумы /" + @ forum.id.to_s + "/ комментарии /" + c.id.to_s = link_to "", del_path, метод:: удалить, класс: «fa fa-scissors». Любая догадка, почему forum_comment_path дает мне неправильный адрес "/forums/25/comment.16" – Pratyush