如何从引用的 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 %>