作为标签的行为在宝石轨道上不起作用

我无法获得Act_as_taggable宝石的工作。 我跟着几个教程,甚至在这个问题上查看过时的Railscast,但我的方法tag_list的主要问题,我使用Rails 4

我做了以下工作:

gem'acts-as-taggable-on','〜> 3.4'(捆绑)rake acts_as_taggable_on_engine:install:migrations(rake db:migrate; restart server)在我的Blog.rb中添加acts_as_taggable在BlogsController中通过安全参数传递了tag_list放置了这个进入我的_form部分:

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

因此,我还无法将标签添加到任何博客帖子。 请帮忙


编辑:我使用Rails 4,但宝石版本是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 %>

这对我有用,但是:

  • 当我写一个由逗号分隔的标签列表时,它们被正确保存。 例如:“红色,绿色,蓝色”。
  • 但是,当表单再次加载时,逗号从文本字段中消失,如“红绿蓝”。 如果我再次保存表单,则会创建一个新标签:“红绿蓝”。
  • 如果我在模型中创建了一个虚拟属性,但我认为这打破了gem中tag_list方法的正常行为:

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

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


    请确保您在模型上添加这些行

    acts_as_taggable # Alias for acts_as_taggable_on :tags
      acts_as_taggable_on :skills
    

    在表单中使用你的模型对象

    @blog.tag_list_on(:skills_tags)
    
    链接地址: http://www.djcxy.com/p/6111.html

    上一篇: Acts As Taggable On gem rails not working

    下一篇: Acts As Taggable On with Rails Admin