【问题标题】:Rails 4 acts_as_taggable_on :tag_list => [] strong param not working?Rails 4acts_as_taggable_on :tag_list => [] 强参数不起作用?
【发布时间】:2015-02-14 03:59:41
【问题描述】:

我正在尝试通过 gem 在我的笔记模型上使用标签。但是,即使我在尝试提交它们时已明确添加(2 种单独的方式) :tag_list => [] 到我的笔记控制器的强参数中,我仍然会在日志中收到未经许可的参数错误?我已经运行了捆绑安装和迁移。

这是我的文件:

#/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'

我遵循了 gem 中的所有内容,但我仍然无法让它工作。

【问题讨论】:

    标签: ruby-on-rails tags


    【解决方案1】:

    我实际上是通过添加 :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
    

    【讨论】:

      【解决方案2】:

      acts-as-taggable-on gem 使用多态关联。在您的情况下,作为空数组的参数无法初始化,这可能会导致问题。希望这能消除您的困惑。 :-)

      【讨论】:

        【解决方案3】:

        在表单中使用选择标签时需要:tag_list =&gt; [],因为在提交表单时选择标签会返回一个数组。

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          • 嘿,感谢@sansarp 的回复,看看下面我的回答(我得到了它的工作,但不知道为什么如果你能帮我弄清楚它会很棒。谢谢!)
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-15
          • 1970-01-01
          • 2019-09-17
          • 1970-01-01
          相关资源
          最近更新 更多