所以这是我的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
对象类型创建两个表单部分。
但是,一旦页面加载,它会自动使用所有nil值实例化每个DailyEntry
和WeeklyEntry
的对象。因此,每当我执行一个简单的@daily_entries.each
循环时,它会出现一个包含大量nil值的记录 - 即使记录本身不是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
个循环解决这些nil对象?
答案 0 :(得分:0)
尝试“自信代码”方法。在这种特殊情况下,滥用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
观看this video with Avdi Grimm,它可以很好地解释这些关于自信代码的内容。
希望有所帮助:)
答案 1 :(得分:0)
这是我发现的作品:
在我的HomeController.rb
:
@daily_entries = current_user.daily_entries.where(:id == true)
过滤掉已初始化但未保存的记录。