Ruby on rails 当值在Rails 5中可用时,仅在方法中使用值
我正在使用Rails中的ASLSXgem生成Excel文件 在我的模板中,我有:Ruby on rails 当值在Rails 5中可用时,仅在方法中使用值,ruby-on-rails,ruby,ruby-on-rails-4,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 4,Ruby On Rails 5,我正在使用Rails中的ASLSXgem生成Excel文件 在我的模板中,我有: wb = xlsx_package.workbook wb.add_worksheet(name: "Buttons") do |sheet| sheet.add_row ['Id', 'Data', 'Passenger'] @rides.each do |ride| sheet.add_row [ride.id, ride.date, ride.passenger.name]
wb = xlsx_package.workbook
wb.add_worksheet(name: "Buttons") do |sheet|
sheet.add_row ['Id', 'Data', 'Passenger']
@rides.each do |ride|
sheet.add_row [ride.id, ride.date, ride.passenger.name]
end
end
问题是有些游乐设施没有乘客,因此.name方法失败。
如何确保仅在存在骑乘设施时使用name方法
我试过:
sheet.add_row [ride.id, ride.date, ride.passenger.name if ride.passenger]
但是这不起作用。Ruby非常灵活,但是在这样的情况下,如果,就不能使用
。相反,你有两个选择
对于较新(2.3+)版本的Ruby,您可以使用条件导航操作符:
[ride.id, ride.date, ride.passenger&.name]
或者对于较老的:
[ride.id, ride.date, ride.passenger && ride.passenger.name]
通常x&&y
大致相当于y,如果x
Ruby非常灵活,但在这种情况下,如果if
,则不能使用y。相反,你有两个选择
对于较新(2.3+)版本的Ruby,您可以使用条件导航操作符:
[ride.id, ride.date, ride.passenger&.name]
或者对于较老的:
[ride.id, ride.date, ride.passenger && ride.passenger.name]
通常x&&y
大致相当于y,如果x
您可以选择最旧的额外行
name = ride.passenger ? ride.passenger.name : ""
sheet.add_row [ride.id, ride.date, name]
#OR
sheet.add_row [ride.id, ride.date, ride.passenger ? ride.passenger.name : ""]
如果有选择的话,你可以多走一行
name = ride.passenger ? ride.passenger.name : ""
sheet.add_row [ride.id, ride.date, name]
#OR
sheet.add_row [ride.id, ride.date, ride.passenger ? ride.passenger.name : ""]
你可以这么做
sheet.add_row [ride.id, ride.date, ride.passenger.try(:name)]
如果没有乘客,则返回零;如果有乘客,则返回乘客姓名
有关的更多信息。您只需执行以下操作即可
sheet.add_row [ride.id, ride.date, ride.passenger.try(:name)]
如果没有乘客,则返回零;如果有乘客,则返回乘客姓名
更多关于。的信息我喜欢这部分乘坐乘客和姓名。你能和我分享一个我能找到这些新功能的来源吗?它叫a。我喜欢这个部分ride.passenger&.name
。你能和我分享一个资源吗,在那里我可以找到这些新功能。它叫做。