我正在介紹Hartl的Railstutorial第11章的一半,它介紹瞭如何在主頁上添加micropost feed。它通過代碼:爲什麼提交一個無效的帖子會打破micropost feed(Railstutorial chapter 11)?
@feed_items = current_user.feed.paginate(page: params[:page])
,其中飼料的方法
def feed
Micropost.where("user_id = ?", id)
end
現在在主頁,在微柱飼料假設是你有一個部分包含:
<% if @feed_items.any? %>
<ol class="microposts">
<%= render @feed_items %>
</ol>
<%= will_paginate @feed_items %>
<% end %>
現在該教程提到,在主頁上,如果您提交了無效的微博,它會中斷:
「在提交失敗的微博時,主頁預計會有一個@feed_items 實例變量,所以失敗的提交當前會中斷。」
我不明白爲什麼這個打破的解釋。 @feed_items
不應該包含數據庫中所有其他有效的微博嗎?因此,即使您提交了無效帖子,@feed_items也會填充以前有效的微博嗎?我不明白無效micropost是如何影響@feed_items的,尤其是因爲@feed_items從數據庫中提取微博,微博僅包含有效的微博,因爲提交的微博上存在驗證。
我不太確定@feed_items是如何變成零的,因爲它從數據庫中繪製微博,微博有效的微博。我在這裏做什麼? – user2889046
因爲如果micropost提交失敗,那麼你在'params'中不會有一個有效的'id',所以你的'feed'方法將不起作用,所以你的'@ feed_items'不會被填充。現在清楚了嗎? –
是的,謝謝你的幫助 – user2889046