Как мне обойти нулевой объект, создаваемый в моем контроллере?

Так что это мой контроллер для моего Home#Index

class HomeController < ApplicationController
  def index
    @daily_entries = current_user.daily_entries
    @weekly_entries = current_user.weekly_entries
    @daily_entry = current_user.daily_entries.new
    @weekly_entry = current_user.weekly_entries.new
  end
end

Причина в том, что это так, потому что я пытаюсь визуализировать две части формы для создания обоих DailyEntry а также WeeklyEntry типы объектов на моем Home#Index.html.erb,

Но, как только страница загружается, она автоматически создает объект каждого DailyEntry а также WeeklyEntry со всеми значениями ноль. Поэтому всякий раз, когда я делаю простой @daily_entries.each Цикл, он наталкивается на запись с большим количеством нулевых значений - даже если запись не nil сам.

Как это:

 #<DailyEntry id: nil, breakfast: nil, snack_1: nil, lunch: nil, snack_2: nil, dinner: nil, water_intake: nil, workout: nil, notes: nil, created_at: nil, updated_at: nil, user_id: 1>]

Помимо удаления current_user.daily_entries.new звонки, как мне обойти эти ноль объектов для моего each петли на этой странице?

2 ответа

Решение

Вот что я нашел работы:

В моем HomeController.rb:

@daily_entries = current_user.daily_entries.where(:id == true)

Это отфильтровывает инициализированные, но несохраненные записи.

Попробуйте подход "уверенный код". В этом конкретном случае злоупотребляйте такими методами, как to_s а также to_i, Примеры работают лучше:

@daily_entries.each do |daily_entry|
  # If it's a String, nothing happens, if it's nil, empty string will be returned.
  string_val = daily_entry.breakfast.to_s

  # If it's a Fixnum, nothing happens, if it's nil, 0 will be returned.
  int_val = daily_entry.id.to_i
end

Посмотрите это видео с Авди Гриммом, оно очень хорошо объясняет этот материал об уверенном коде.

Надеюсь, поможет:)

Другие вопросы по тегам