2015-02-04 3 views
0

ROR 신인. acts_as_taggle_on 보석을 사용하여 태그를 지정하고 this post과 비슷한 두 가지 유형의 태그를 만들려고했습니다. 폼이 작동하고 있고 두 개의 다른 태그 유형이 추가되었지만 태그 유형 중 하나만 작동하기 때문에 컨트롤러에 문제가 발생합니다 (일반 태그 - '시리즈'가 작동하지 않음). '작동하지 않는다'고 말하면 링크 된 태그가있는 작품 만 내 색인 페이지를 필터링 할 수있는 클릭 가능한 링크가 표시 페이지의 태그입니다.이 태그는 '태그'에는 작동하지만 시리즈에는 작동하지 않습니다. . ' Series는 제가 링크 된 시리즈 태그가있는 것만을 보여주는 대신 모든 삽화를 보여줍니다.두 번째 태그 유형이 작동하지 않는 이유는 무엇입니까?

컨트롤러 : 너무 건조하지 마세요! 환영합니다. :) 제어 허가에

def index 
    if params[:tag] 
     @artworks = Artwork.tagged_with(params[:tag]) 
    else 
     @artworks = Artwork.all 
    end 
    end 

    def tagged 
    if params[:tag].present? 
     @artworks = Artwork.tagged_with(params[:tag]) 
    else 
     @artworks = Artwork.all 
    end 
    end 

    def series 
    if params[:series].present? 
     @artworks = Artwork.tagged_with(params[:series]) 
    else 
     @artworks = Artwork.all 
    end 
    end 

강한 PARAMS :

:tag_list, :tag, :series_list, :series 

모델 :

acts_as_taggable 
acts_as_taggable_on :tags, :series 

경로 :

get 'series' => 'artworks#index', :as => 'series' 
get 'tagged' => 'artworks#index', :as => 'tagged' 
root "artworks#index" 

쇼 :

<% unless @artwork.series.blank? %> 
    <div class="col-xs-6 col-sm-6 col-md-4"> 
    <p class="field-label">Series</p> 
    <% @artwork.series.each do |series| %> 
     <span class="tags"> 
     <%= link_to series.name, series_url(:series => series.name) %> 
     </span> 
    <% end %> 
    </div> 
<% end %> 

<% unless @artwork.tags.blank? %> 
    <div class="col-xs-6 col-sm-6 col-md-4"> 
    <p class="field-label">Tags</p> 
    <% @artwork.tags.each do |tag| %> 
     <span class="tags"> 
     <%= link_to tag.name, tagged_url(:tag => tag.name) %> 
     </span> 
    <% end %> 
    </div> 
<% end %> 

인덱스 : 당신의 도움에 미리

<div id="artworks" class="transitions-enabled"> 
    <% @artworks.each do |artwork| %> 
    <div class="box"> 
     <%= link_to image_tag(artwork.image.url(:medium)), artwork %> 
    </div> 
    <% end %> 
</div> 

감사합니다!

답변

0

마지막으로 작동하도록했습니다. 여기 내 컨트롤러에서 작업 한 것들이 있습니다 :

def index 
    if params[:tag] 
     @artworks = Artwork.tagged_with(params[:tag]) 
    elsif params[:series] 
     @artworks = Artwork.tagged_with(params[:series]) 
    else 
     @artworks = Artwork.all 
    end 
    end 

    def tagged 
     @artworks = Artwork.tagged_with(params[:tag]) 
    end 

    def series 
     @artworks = Artwork.tagged_with(params[:series]) 
    end 
+0

BTW [이 링크] (http://www.howtogeek.com/howto/programming/ruby/ruby-if-else-if-command- syntax /)는 else 대신에 elsif를 사용해야한다는 것을 알아 냈습니다 if –

관련 문제