如何从引用的 table Rails 中获取值
How to get values from referenced table Rails
我有 3 个具有以下结构的模型:
申请和照片belongs_to列表。列出 has_many 张照片和应用程序。
class Listing < ActiveRecord::Base
belongs_to :user
has_many :photos
has_many :applications
end
class Application < ActiveRecord::Base
belongs_to :user
belongs_to :listing
end
class Photo < ActiveRecord::Base
belongs_to :listing
end
我正在尝试获取与用户应用程序关联的列表的照片。
我通过传递当前用户的所有应用程序在控制器中启动:
@apps = current_user.applications
在视图中我想像这样显示所有照片:
<% @apps.each do |app| %>
<%= image_tag app.listing.photos[0].image.url(:thumb) if app.listing.photos.length > 0 %>
<% end %>
但我在尝试渲染视图时遇到此错误:
undefined method `photos' for nil:NilClass
我不能使用此语法访问属于应用程序的列表的照片 - app.listing.photos[0].image.url 吗?
是否有可能您的某些应用程序未与任何列表相关联?如果是:
<% @apps.each do |app| %>
<%= image_tag app.listing.photos[0].image.url(:thumb) if app.listing.try(:photos).present? %>
<% end %>
我有 3 个具有以下结构的模型:
申请和照片belongs_to列表。列出 has_many 张照片和应用程序。
class Listing < ActiveRecord::Base
belongs_to :user
has_many :photos
has_many :applications
end
class Application < ActiveRecord::Base
belongs_to :user
belongs_to :listing
end
class Photo < ActiveRecord::Base
belongs_to :listing
end
我正在尝试获取与用户应用程序关联的列表的照片。
我通过传递当前用户的所有应用程序在控制器中启动:
@apps = current_user.applications
在视图中我想像这样显示所有照片:
<% @apps.each do |app| %>
<%= image_tag app.listing.photos[0].image.url(:thumb) if app.listing.photos.length > 0 %>
<% end %>
但我在尝试渲染视图时遇到此错误:
undefined method `photos' for nil:NilClass
我不能使用此语法访问属于应用程序的列表的照片 - app.listing.photos[0].image.url 吗?
是否有可能您的某些应用程序未与任何列表相关联?如果是:
<% @apps.each do |app| %>
<%= image_tag app.listing.photos[0].image.url(:thumb) if app.listing.try(:photos).present? %>
<% end %>