Отображение картинки для пользователя через ответ на вопрос - PullRequest
0 голосов
/ 25 мая 2010

Хорошо, я пытаюсь отобразить аватар пользователя. Приложение, которое я настроил, позволяет пользователям создавать вопросы и ответы (я называю «сайты» ответов в коде), представление, в котором я пытаюсь это сделать, находится в файле /views/questions/show.html.erb. Также следует отметить, что я использую камень «Скрепка». Вот установка:

ассоциации

Users

class User < ActiveRecord::Base

  has_many :questions, :dependent => :destroy
  has_many :sites, :dependent => :destroy
  has_many :notes, :dependent => :destroy
  has_many :likes, :through => :sites , :dependent => :destroy
  has_many :pics, :dependent => :destroy
  has_many :likes, :dependent => :destroy


end

Вопросы

class Question < ActiveRecord::Base
  has_many :sites, :dependent => :destroy
  has_many :notes, :dependent => :destroy
  has_many :likes, :dependent => :destroy
  belongs_to :user
 end

Ответы (сайты)

class Site < ActiveRecord::Base

  belongs_to :question
  belongs_to :user
  has_many :notes, :dependent => :destroy
  has_many :likes, :dependent => :destroy

  has_attached_file :photo, :styles => { :small => "250x250>" }
end

Pics

class Pic < ActiveRecord::Base
  has_attached_file :profile_pic, :styles => { :small => "100x100" }
  belongs_to :user
end

/views/questions/show.html.erb отображает часть /views/sites/_site.html.erb, которая вызывает Ответ (сайт) с:

<% div_for site do %>
<%=h site.description %>
<% end %>

Я пытался сделать что-то вроде:

<%=image_tag site.user.pic.profile_pic.url(:small) %>
<%=image_tag site.user.profile_pic.url(:small) %>

и т.д.. Но это, очевидно, неправильно. Моя ошибка указывает на действие «Вопросы №», поэтому я представляю, что мне нужно что-то там определить, но не уверен, что именно. Можно ли вызывать изображение с учетом текущих ассоциаций, размещения вызова и, если да, какие дополнения к контроллеру мне нужно сделать, и какая строка кода будет вызывать изображение?

ОБНОВЛЕНИЕ: Вот код вопроса вопросов диспетчера #:

  def show

    @question = Question.find(params[:id])
    @sites = @question.sites.all(:select => "sites.*, SUM(likes.like) as like_total",
             :joins => "LEFT JOIN likes AS likes ON likes.site_id = sites.id",
             :group => "sites.id",
             :order => "like_total DESC")

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @question }
    end
  end

1 Ответ

0 голосов
/ 25 мая 2010

У вас есть has_many ассоциация для фото:

class User < ActiveRecord::Base
  ...
  has_many :pics, :dependent => :destroy
end

Но вы пытаетесь действовать, как если бы была только одна картинка:

<%=image_tag site.user.pic.profile_pic.url(:small) %>

Итак, сделайте первый снимок (возможно, вам также следует проверить, существует ли он):

<%=image_tag site.user.pics.first.profile_pic.url(:small) %>

Или измените ассоциацию на has_one, если у пользователя может быть только одно изображение:

class User < ActiveRecord::Base
  ...
  has_one :pic, :dependent => :destroy
end

<%=image_tag site.user.pic.profile_pic.url(:small) %>
...