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

时间:2017-04-16 15:19:55

标签: ruby-on-rails destroy

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

2 个答案:

答案 0 :(得分:2)

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

发布您的控制器代码以获取destroy方法,以及您在设置正确路径后所遇到的任何错误。

答案 1 :(得分:0)

如果显示&lt;%= [comment.article,comment]%&gt;我可以看到 它显示了

[#<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>

那么这个工作完美!所以我坚持这个。