Rails 4 acts_as_taggable_on:tag_list => []强大的param不工作?

时间:2015-02-14 03:59:41

标签: ruby-on-rails tags

我正试图通过此gem在我的笔记模型上使用标记。但是,即使我已明确添加(2个单独的方式):tag_list => []当我尝试提交它们时,我的笔记控制器的强大参数,我仍然在日志中得到一个未经许可的参数错误?我已经运行了bundle install,并且也进行了迁移。

以下是我的文件:

#/models/note.rb
class Note < ActiveRecord::Base
 belongs_to :user
  acts_as_taggable

  validates_presence_of :name, :note_text, :note_style, :note_description
end

#/controllers/notes_controller.rb
.
.
.
 def note_params
    params.require(:note).permit(:name, :note_style, :note_text, :note_description, :tag_list => [])
 end

和我的笔记形成:

 .form-group
      = f.label :tag_list, "Tags (seperate by comma)"
      = f.text_field :tag_list, class: 'form-control'

我跟踪了宝石中的所有东西,但我仍然无法让它工作。

4 个答案:

答案 0 :(得分:2)

我实际上是通过添加:tag_list来制作强大的参数来实现它。知道为什么这样有效,而不是他们如何指定在gem文档中做到这一点?

#/controllers/notes_controller.rb
.
.
.
 def note_params
    params.require(:note).permit(:name, :note_style, :note_text, :note_description, :tag_list, :tag_list => [])
 end

答案 1 :(得分:1)

act-as-taggable-on gem使用多态关联。在你的情况下,作为空数组的param无法初始化,这可能导致了问题。希望这可以解决你的困惑。 : - )

答案 2 :(得分:1)

当您在表单中使用select标记时需要

:tag_list => [],因为select表单在提交表单时会返回一个数组。

由于您使用的是文本字段而不是select标记,因此在提交表单时您没有返回数组,而是单个值(文本字段中的字符串),因此您只需要:tag_list in您的许可参数列表。

答案 3 :(得分:0)

尝试在允许的参数列表中使用它 :tag_list =&gt; [:name,:taggings_count,:count]