我做一个Rails博客教程,并不能完全理解下面的link_to代码Ruby on Rails link_to对n00b的解释?
<%= link_to 'Destroy Comment', [comment.post, comment], method: :delete, data: { confirm: 'Are you sure?' } %>
为什么我必须使用:
[comment.post, comment]
,为什么我不能呢只写:
@post.comment
我的第二个相关的问题是,因为我创建在控制器中的“毁灭”行动如下:
def destroy @post = Post.find(params[:post_id]) @comment = @post.comments.find(params[:id]) @comment.destroy redirect_to post_path(@post)
末
为什么没有我在的link_to代码提“消灭”?
<%= link_to 'Destroy Comment', [comment.post, comment], method: :delete, data: { confirm: 'Are you sure?' } %>
回答
为什么你必须提供邮政对象和评论到的link_to助手两者的原因是因为评论是在发表一个嵌套的资源,并且两个ID必须以构造URL被称为。它实际上相当于:
link_to 'Destroy Comment', post_comment_path(comment.post, comment), ...
它在做什么是它的解决路径帮手为你使用url_for
。请参阅http://guides.rubyonrails.org/routing.html#creating-paths-and-urls-from-objects。
您不必在您的link_to
中提及销毁,因为销毁是行为的名称。您的路线文件概述了哪些控制器和操作与哪些路线相关联。
我假设你使用的是资源丰富的路由,这是为所有CRUD操作定义路由的简写方式。有关HTTP动词和控制器操作之间的映射,请参见http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions。您会看到delete
映射到destroy
,并且您在link_to
上使用method: :delete
。
所以这里有很多事情要做。
1)我的猜测是link_to
在第一部分是在一个循环内。真的吗?这将是类似@post.comments.each do |comment|
。如果是这种情况,那么可能发生的事情是你有评论嵌套在帖子下。该文档可以在here找到。括号用于标识注释,您需要输入post
id。你也可以做[@post, comment]
,这也可以。您不能只写@post.comment
,因为没有足够的信息来识别正确的评论。
2)Rails通过HTTP动词来确定从控制器调用哪个动作。您正在向/posts/:post_id/comments/:id
发送一个HTTP DELETE请求,然后路由文件找出它属于评论控制器。该文档可以找到here和here。
- 1. Ruby on Rails的的link_to
- 2. LINK_TO页面 - Ruby on Rails的
- 3. link_to ruby on rails with additional html
- 4. Ruby on rails link_to语法
- 5. Ruby on rails link_to全局类?
- 6. Ruby on Rails link_to方法
- 7. Ruby on rails link_to语法
- 8. Ruby on Rails - link_to button/css
- 9. Ruby on Rails的 - 的link_to()的问题
- 10. Ruby on Rails的的link_to图像
- 11. Ruby on Rails的的link_to内部ID
- 12. Ruby on Rails的:的link_to怪怪
- 13. Ruby on Rails的 - 的link_to - 引号类
- 14. Ruby on Rails link_to错误的目标?
- 15. link_to ruby-on-rails的另一页
- 16. Ruby on Rails link_to未定义的方法
- 17. Ruby on Rails UrlGenerationError
- 18. Ruby on Rails将确认添加到link_to
- 19. Ruby on Rails link_to使用put方法
- 20. ruby on rails wrap_代码块link_to
- 21. Ruby on Rails。 link_to不会引发异常
- 22. Ruby on Rails - 将值传递给link_to
- 23. Ruby on Rails - link_to带标签过滤器
- 24. Ruby on Rails在link_to中添加路径?
- 25. Ruby on Rails的,UrlHelper的ActionView的link_to新对象
- 26. Ruby on Rails解密
- 27. Ruby on Rails n00b。耙数据库:迁移失败
- 28. Friendly_ID Ruby on Rails
- 29. Ruby on Rails - 如何解析此对象
- 30. Ruby on Rails - redirect_to