У меня возникают проблемы со сложной задачей, отображая фотографию как часть набора результатов для каждого из них. Я довольно новичок в Rails в целом, исходя из другого языка, где я могу сделать это за считанные секунды.Невозможно получить фотографии для работы в рельсах
Запрос @photo
находит 0 записей, даже если несколько записей для фотографий находятся в базе данных, соответствующей идентификатору свойства.
Я не слишком уверен, что я здесь делаю неправильно.
Вот мои соответствующие файлы:
приложение/контроллеры/properties_controller.rb:
class PropertiesController < ApplicationController
......
def all
# gets all of the properties and uses will_paginate
@properties = Property.paginate(page: params[:page])
# should get the first positioned photo matching the results in the @properties query
@photos = Photo.where(:property_id => @properties.map(&:id)).order("position").first
end
# ......
end
приложение/модели/property.rb:
class Property < ActiveRecord::Base
belongs_to :listing_type
belongs_to :property_type
belongs_to :status
has_many :photos
# ......
end
приложение /models/photo.rb:
class Photo < ActiveRecord::Base
mount_uploader :photoname, PhotoUploader
belongs_to :property
acts_as_list scope: :property_id
validates :photoname, presence: true
validates :property_id, presence: true
end
details.html.erb:
<% @properties.reverse_each do |property| %>
<div class="item col-md-4">
<div class="image">
<%= link_to property_path(property) do %>
<span class="btn btn-default"><i class="fa fa-file-o"></i> Details</span>
<% end %>
<%= image_tag(property) %>
</div>
# ......
<% end %>
Когда я делаю это из Вашего комментария выше: @photo = Photo.where. (PROPERTY_ID: @ property.id) .order ("Положение") предел (1), я получаю сообщение об ошибке ... NoMethodError в PropertiesController # all ... undefined method 'id 'for nil: NilClass – lmtony
Когда я это делаю: @photo = @ property.photos.order (" position "). Сначала я получаю сообщение об ошибке ... NoMethodError в PropertiesController # all ... undefined method 'photos 'for nil: NilClass – lmtony
ОК. Поэтому я включил для @properties и @photos с properties.map ... Я заменил вызов фотографии на странице сведений с помощью <% = image_tag (property.photos.photoname.medium)%> и получил эту ошибку. undefined метод 'photoname 'для # <Фото :: ActiveRecord_Associations_CollectionProxy: 0x007f30c45975f8> – lmtony