我无法让 Act_as_taggable gem 工作。我已经遵循了几个教程,甚至在这个问题上查看了过时的 Railscast,但我的主要问题在于方法 tag_list,我正在使用 Rails 4
我已完成以下操作:
gem 'acts-as-taggable-on','~> 3.4'(捆绑) rake acts_as_taggable_on_engine:install:migrations (rake db:migrate; 重新启动服务器) 添加acts_as_taggable到我的Blog.rb 通过 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,但 gem 版本是 3.5.0。
我在使用同一个 gem 时遇到了一些问题,这就是我所做的。
class Common < ActiveRecord::Base
# ...
acts_as_taggable
# ...
end
在 Controller 中:
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 %>
这对我有用,但是:
- 当我编写以逗号分隔的标签列表时,它们会正确保存。例如:“红、绿、蓝”。
- 但是,当再次加载表单时,逗号从文本字段中消失,如“red green blue”。如果我再次保存表单,则会创建一个新标签:“红绿蓝”。
如果我在模型中创建一个虚拟属性,它可以工作,但我认为这会破坏 gem 中 tag_list 方法的正常行为:
class Common < ActiveRecord::Base
# ...
acts_as_taggable
# ...
def tag_list
tags.join(', ')
end
end
希望这对您有任何帮助......
关于ruby-on-rails - 在 gem rails 上充当可标记功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29511292/