为什么我的第二个标签类型不起作用?

时间:2015-02-04 14:37:18

标签: ruby-on-rails ruby-on-rails-4 acts-as-taggable-on

ROR新秀。我使用acts_as_taggle_on gem进行标记,并尝试创建两种不同类型的标记,类似于this post。我已经让表单工作了,它添加了两种不同的标签类型,但是我的控制器一定有问题,因为只有一种标签类型有效(常规标签 - '系列'没有'工作)。当我说'不工作'时我的意思是显示页面上的标签是可点击的链接,可以将我的索引页面过滤到只有那些带有我链接标签的艺术品:这适用于'标签'但不适用于'系列。'系列只是向我展示了所有的艺术作品,而不仅仅是那些带有我链接的系列标签的作品。

控制器:不是很干!建议欢迎。 :)

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

控制许可证中强有力的参数:

: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>

提前感谢您的帮助!

1 个答案:

答案 0 :(得分: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