Acts as Taggable在宝石轨道上不起作用

时间:2015-04-08 09:49:06

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

我无法让Act_as_taggable gem工作。我已经关注了几个教程,甚至在这个问题上查看过时的Railscast,但是我使用方法tag_list的主要问题是,我使用的是Rails 4

我做了以下事情:

宝石'act-as-taggable-on','〜> 3.4'(捆绑) rake acts_as_taggable_on_engine:install:migrations(rake db:migrate; restart server) 已将acts_as_taggable添加到我的Blog.rb中 通过BlogsController中的安全参数传递tag_list 将此放入我的_form partial:

        <div class="field">
        <%= f.label :tag_list, "Tags (separated by commas)" %><br />
        <%= f.text_field :tag_list %>
        </div>

当我去编辑博客帖子时,标签不会被逗号分隔,即使我提交表单时我在每个标签后放置了逗号。在rails控制台中,我已经验证了tag_list不是一个方法,因为我一直收到错误

      undefined method `tag_list' for #<Class:0x007fa668cb03e8>

因此我无法在任何博客文章中添加标签。请帮忙

2 个答案:

答案 0 :(得分:2)

编辑:我使用的是Rails 4,但gem版本是3.5.0。

我对同一个宝石有一些问题,这就是我所做的。

class Common < ActiveRecord::Base
  # ...
  acts_as_taggable
  # ...
end

在控制器中:

class CommonsController < ApplicationController
  # ...
  def my_params
    params.require(:common).permit(
      # ...
      :tag_list,
      # ...
    )
  end
  #...
end

在模板中:

<%= form_for @common do |f| %>
  <!-- ... -->
  <p>
    <%= f.label :tag_list %> <%= f.text_field :tag_list %>
  </p>
  <!-- ... -->
<% end %>

这对我有用,但是:

  • 当我写下用逗号分隔的标签列表时,它们会被正确保存。例如:&#34;红色,绿色,蓝色&#34;。
  • 但是,当再次加载表单时,逗号从文本字段中消失,就像在&#34;红绿蓝&#34;中一样。如果我再次保存表单,则会创建一个新标签:&#34;红绿蓝&#34;。

如果我在模型中创建虚拟属性它可以工作,但我认为这打破了gem中tag_list方法的正常行为:

class Common < ActiveRecord::Base
  # ...
  acts_as_taggable
  # ...
  def tag_list
    tags.join(', ')
  end
end

希望这能以任何方式帮助你......

答案 1 :(得分:0)

请确保在模型

上添加此行
acts_as_taggable # Alias for acts_as_taggable_on :tags
  acts_as_taggable_on :skills

以表格

使用您的模型对象
@blog.tag_list_on(:skills_tags)