link_to 'Destroy', [comment.article, 评论],

link_to 'Destroy', [comment.article, comment],

http://guides.rubyonrails.org/getting_started.html 中 rails-5.0.2 和 Ruby 2.4.1

向导使用

[comment.article, comment]

我喜欢学习里面的使用方法,这个是什么意思。 我只是不明白,也找不到任何文档。

<%= link_to 'Destroy Comment', [comment.article, comment],
           method: :delete,
           data: { confirm: 'Are you sure?' } %>

而不是

<%= link_to 'Destroy Comment', article_comment_path,
           method: :delete,
           data: { confirm: 'Are you sure?' } %>

这是行不通的(包括article_comment_path(评论) 显示的错误:

ActiveRecord::RecordNotFound in CommentsController#destroy

<%= link_to 'Destroy Comment', article_comment_path(comment)

此处路线

    Prefix Verb   URI Pattern                                       Controller#Action
    article_comments GET    /articles/:article_id/comments(.:format)          comments#index
                     POST   /articles/:article_id/comments(.:format)          comments#create
 new_article_comment GET    /articles/:article_id/comments/new(.:format)      comments#new
edit_article_comment GET    /articles/:article_id/comments/:id/edit(.:format) comments#edit
     article_comment GET    /articles/:article_id/comments/:id(.:format)      comments#show
                     PATCH  /articles/:article_id/comments/:id(.:format)      comments#update
                     PUT    /articles/:article_id/comments/:id(.:format)      comments#update
                     DELETE /articles/:article_id/comments/:id(.:format)      comments#destroy
            articles GET    /articles(.:format)                               articles#index
                     POST   /articles(.:format)                               articles#create
         new_article GET    /articles/new(.:format)                           articles#new
        edit_article GET    /articles/:id/edit(.:format)                      articles#edit
             article GET    /articles/:id(.:format)                           articles#show
                     PATCH  /articles/:id(.:format)                           articles#update
                     PUT    /articles/:id(.:format)                           articles#update
                     DELETE /articles/:id(.:format)                           articles#destroy
                root GET    /                                                 articles#index

Rails中嵌套路由的缩写。当您提供 link_to 这样的数组时,它将转换为 URL,例如:/articles/1/comments/2。大多数只使用路由助手,但是因为它们更明确(即 article_comment_path(article_id: @article.id, id: @comment.id)

Post destroy 方法的控制器代码,以及由于设置了正确的路由而出现的任何错误。

据我所知,如果显示 <%= [comment.article, comment] %> 它显示

[#<Article id: 1, title: "Title of next", text: "sdfsf", created_at: "2017-04-19 01:43:39", updated_at: "2017-04-19 01:43:39">, #<Comment id: 15, commenter: "sdfdsf", body: "sfsdfsd", article_id: 1, created_at: "2017-04-19 02:50:39", updated_at: "2017-04-19 02:50:39">]

我必须假设 Rails-5.0.2 知道通过选择每个 id 来做什么 并选择合适的销毁路线。

我真的无法理解这背后更好的逻辑。

确定返回使用路线中的引导线

<td><%= link_to 'Destroy', article_comment_path(@article,comment), method: :delete, data: { confirm: 'Are you sure?' } %></td>

好吧,这一个完美!所以我坚持这个。