Как мне обойти нулевой объект, создаваемый в моем контроллере?
Так что это мой контроллер для моего 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
Посмотрите это видео с Авди Гриммом, оно очень хорошо объясняет этот материал об уверенном коде.
Надеюсь, поможет:)