Как мне использовать метод поиска ruby ​​on rails или это плохая практика? - PullRequest
2 голосов
/ 21 января 2012

Итак, я реализовал функцию, которая позволяет пользователям устанавливать фотографии профиля по умолчанию и фотографии обложки фотоальбома по умолчанию.

Выполнены эти функции сейчас:

В моей базе данных есть следующие таблицы:
Пользователь (и) (имеет один профиль, имеет много фотоальбомов)
Профили (принадлежит пользователю) содержит photo_id
Фотоальбом (ы) (принадлежит пользователю, имеет много фотографий) содержит photo_id
Фото (ы) (принадлежит фотоальбому)

Отображение фотографии по умолчанию для пользователей прямо. У меня проблемы с отображением фотографии альбома по умолчанию для пользователей.

Вот так я могу отобразить фотографию профиля пользователя по умолчанию:

UsersController:

default_profile_photo_id = current_user.profile.photo_id
 @default_photo = Photo.find(default_profile_photo_id) 

Пользователи видят шаблон шоу:

<%= link_to image_tag(@default_photo.image, :width =>"200"), @user.username %> 

В настоящее время для фотографий по умолчанию для фотоальбомов я показываю первое фото внутри этого фотоальбома:

   <% for photo_album in @photoalbums %>
   <%= link_to photo_album.album_title, photo_album %>    
   <%= link_to image_tag(photo_album.photos.first.image, :width =>"100"), photo_album %>
   <%= link_to "Edit Album", edit_photo_album_path(photo_album) %> 
   <%= photo_album.photos.size %>
   <% end %>

Связанное действие контроллера:

  def index
    @photoalbums = PhotoAlbum.find_all_by_user_id(current_user.id)
  end

Что мне нужно сделать, так это во время цикла for вытянуть строку из таблицы фотографий с идентификатором, совпадающим с идентификатором photo_id фотоальбома, который в данный момент находится в цикле, чтобы на моем шаблоне индекса я мог извлечь изображение из соответствующий ряд фотографий и отобразить его.

Я пробовал бесконечные решения, но ни одно из них не работает ..

Мне нужна помощь опытного программиста.

С уважением

Ответы [ 2 ]

0 голосов
/ 22 января 2012

Модель фотоальбома:

belongs_to :photo

просмотр:

image_tag(photo_album.photo(photo_album.photo_id).image

Очень, очень простое исправление, вдохновленное комментариями Фредерика Ченгса.

0 голосов
/ 21 января 2012

Одним из эффективных способов сделать это было бы добавление фотографии по умолчанию к альбомам, которые вы установили при сохранении в качестве первой фотографии.

class PhotoAlbum
  belongs_to :user
  has_many :photos
  belongs_to :default_photo

  before_save :set_default_photo

  protected
    def set_default_photo
      self.default_photo = self.photos.first
    end
end

Затем в вашем контроллере вы можете просто включить фотографию по умолчанию в ваш запрос.

def index
  @photo_albums = current_user.photo_albums.include(:default_photo)
end

Таким образом, по вашему мнению, когда вы звоните photo_album.default_photo, он больше не попадет в базу данных, потому что фотография по умолчанию уже загружена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...