2013-08-09 2 views
0

나는 다음과 같은 연결 설정이 있습니다접속 관련 기록 (쇼 페이지)

class Image < ActiveRecord::Base 
    belongs_to :imageable, polymorphic: true 

    attr_accessible :photo 
    has_attached_file :photo, :styles => { :small_blog => "250x250#", :large_blog => "680x224#", :thumb => "95x95#" } 
end 

class Post < ActiveRecord::Base 
    has_many :images, as: :imageable 

    accepts_nested_attributes_for :images 
    attr_accessible :comments, :title, :images_attributes 
end 

, 내 인덱스 페이지 내 게시물에 대한 이미지에 액세스하려면 예를 들어, 내가 블록 내 코드를 삽입 할을하고 루프 each를 사용을 통해 : 내 쇼보기에서 해당 게시물에 액세스하는 때

<% @posts.each do |p| %> 
    <% p.images.each do |i| %> 
    <%= image_tag(i.photo.url(:large_blog), :class => 'image') %> 
    <% end %> 
<% end %> 

그래서 나는 단지 내가 생각 하나의 기록에 접근하고 어디과 같이 이미지에 액세스 할 수 있습니다 :

<%= image_tag(@post.image.photo.url(:large_blog), :class => 'image') %> 

하지만 오류가 발생하는 것처럼 보이지 않는 것처럼 보입니다. : undefined method 'image'.

나는 여기에 대해 기본적인 것을 생각하지 않고 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다. 좋아

답변

1

당신은 당신의 PostImagehas_many 관계를 가지고있다 모델이므로 각 게시물에 대한 이미지 컬렉션 만 있으므로 Post.image에 액세스 할 수 없습니다. 당신은 여기있어

: 일반 영어로

당신이 each 방법

<% @posts.each do |p| %> 

으로 반복 Post (@posts)의 수집은 이제 pimages

의 컬렉션을 가지고 하나의 게시물을 의미합니다
<% p.images.each do |i| %> 

그리고 다시를 반복합니다.마지막으로 모든 단일 image 그것은 여전히 ​​배열 될 것입니다 하나의 이미지 만이 경우에도 당신이 그것을에만 액세스 할 수 있도록, 모든 Post는 여러 이미지가있을 수 있습니다 볼 수 있습니다 그래서 Post

<%= image_tag(i.photo.url(:large_blog), :class => 'image') %> 
    <% end %> 
<% end %> 

에 부착 된 표시 @post.images.each 또는 심지어 @post.images.first (또는 last)까지 허용됩니다. 등 만 최신 사진을 선택

class Post < ActiveRecord::Base 
has_one :image, conditions: { primary: true} # if you want to specify main photo and of course only if you have 'primary' in Image model 
(...) 

또한 (위의 코드에서와 같이) 추가 조건을 추가 할 수 있습니다 : 당신이 정말로 또한 수행 할 수 있으려면

@post.image 당신은 모델을 게시도 추가해야 그것에 대해 자세히 알 수 있습니다 here

0

단지의 경우 다른 사람이 비슷한 상황에서, 그래서 누군가가하지 않는 한 내가, 그것은 일하러 가야 할 것입니다 더 나은 대안

<% for image in @post.images %> 
    <a title=""><%= image_tag(image.photo.url(:large_blog), :class => 'image') %></a> 
<% end %>