Rails micropost_controller @feed_item

#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. Спасибо, теперь я понимаю это более глубоко!