#ruby-on-rails-4 #controller
#ruby-on-rails-4 #контроллер
Вопрос:
Мне было интересно, что именно делает эта строка?
@feed_items = []
Это из моего метода создания micropost_controller
def create
@micropost = current_user.microposts.build(micropost_params)
if @micropost.save
flash[:success] = "Micropost created!"
redirect_to root_url
else
@feed_items = []
render 'static_pages/home'
end
end
Если вам нужно знать какие-либо другие файлы, дайте мне знать! Спасибо!
Комментарии:
1. Он просто передает
empty array
@feed_items
2. Итак, этот метод будет создавать микропост, отправлять сообщение и каждый раз передавать его в пустой массив feed_item??
3. Нет. Если
@micropost
не сохраняется, то передается пустой массив@feed_items
.4. Хорошо, я понимаю.. Но могу ли я спросить вас, сэр, знаете ли вы, в чем преимущество передачи пустого массива в feed_items, если сохранение не удалось?
5. Трудно сказать. Это зависит от того, как
@feed_items
будет использоваться позже в будущем.
Ответ №1:
@feed_items используется для динамического отображения микропостов на главной странице
в /_feed.html.erb
<% if @feed_items.any? %>
<ol class="microposts">
<%= render partial: 'shared/feed_item', collection: @feed_items %>
</ol>
<%= will_paginate @feed_items %>
<% end %>
и если сохранить сбой
@feed_items = []
> @feed_items.any?
=> false
итак, в /home.html.erb
<div class="span8">
<h3>Micropost Feed</h3>
<%= render 'shared/feed' %>
</div>
не будет отображаться сбой
Комментарии:
1. Спасибо, теперь я понимаю это более глубоко!