我做一個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