我有一個概念性的rails問題。我目前正在Micahel Hartl着名的Rails教程(http://ruby.railstutorial.org/)上工作,而我正在學習第10章(woot!)。作爲一種背景,微博正在創建,並且像狀態饋送這樣的推特正在被實施。創建微博時,它會顯示在主頁狀態源和配置文件頁面中。我的問題來自microposts和feed_item對象之間的關係。在教程中,可以通過用戶的配置文件或主頁的提要刪除微博。事情是microposts被刪除通過不同的部分取決於它的用戶的個人資料或主頁的飼料。以下是諧音:Michael Hartl的Rails教程第10章破壞方法
對於個人資料頁:
<% if current_user?(micropost.user) %>
<%= link_to "delete", micropost, method: :delete,
data: { confirm: "You sure?" },
title: micropost.content %>
對於主頁狀態供稿:
<li id="<%= feed_item.id %>">
<span class="user">
<%= link_to feed_item.user.name, feed_item.user %>
</span>
<span class="content"><%= feed_item.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(feed_item.created_at) %> ago.
</span>
<% if current_user?(feed_item.user) %>
<%= link_to "delete", feed_item, method: :delete,
data: { confirm: "You sure?" },
title: feed_item.content %>
<% end %>
</li>
這裏是控制器,視圖和模型:
class StaticPagesController < ApplicationController
def home
if signed_in?
@micropost = current_user.microposts.build
@feed_items = current_user.feed.paginate(page: params[:page])
end
end
end
class User < ActiveRecord::Base
...
has_many :microposts, dependent: :destroy
....
def feed
Micropost.where("user_id = ?", id)
end
...
end
class MicropostsController < ApplicationController
before_action :signed_in_user, only: [:create, :destroy]
before_action :correct_user, only: :destroy
..
def destroy
@micropost.destroy
redirect_to root_url
end
...
end
假設我正在微柱從主頁狀態供稿刪除通過微柱控制器的破壞方法發生,但我不知道該如何。我在主頁狀態提要中看到,link_to的刪除按鈕具有刪除方法,但它會轉到feed_item網址。這個feed_item網址來自哪裏?我假設link_to知道某種方式刪除micropost,因爲feed的源代碼來自用戶模型中的一個微博陣列,但它如何知道通過點擊feed_item url轉到Micropost的控制器銷燬方法? link_to「title:feed_item.content」與feed_item有什麼關係可以刪除哪個micropost?如果有人能幫我理解micropost,feed_item和destroy方法之間的關係,我會非常感激。謝謝!
啊,這是有道理的。感謝Adnan!現在對於feed_item ....這就是真正的bug :)微博,feed_item和destroy方法之間的組合/關係是令人困惑的事情。 – guy8214