【问题标题】:Rails: Can't set or update tag_list using a text field with acts_as_taggable_onRails:无法使用带有acts_as_taggable_on的文本字段设置或更新tag_list
【发布时间】:2026-01-22 01:50:01
【问题描述】:

大家好,我正在尝试将标记添加到我正在开发的 Rails 照片库系统中。它从后端工作,但如果我尝试在表单视图中设置或更改它,它就不起作用。

我将acts_as_taggable 添加到照片模型并进行了迁移。我的画廊构建器被编程为自动为它创建的每张照片添加一个标签。这工作正常,就像它为控制台设置它一样。但是,我似乎无法在照片表单中使用 text_field 设置标签。

这是我添加到照片表单中的代码:

  <p>
    <%= f.label :tag_list %><br />
    <%= f.text_field :tag_list %>
  </p>

现在,这很简单,因为 :tag_list 支持单字符串逗号分隔赋值(例如 tag_list = "this, that, the other" #=> ['this', 'that', 'the other'] ),我不明白为什么使用文本字段不起作用。更没有意义的是,如果已经填充了标签列表,则在编辑照片时该列表仍会显示在文本字段中。我似乎无法对列表进行任何更改。他们 github 页面上的文档似乎没有提供有关如何从视图中设置这些值的任何信息。有任何想法吗?

哦,我使用的是 Rails 3 gem 版本。

【问题讨论】:

    标签: ruby-on-rails tags acts-as-taggable-on taglist


    【解决方案1】:

    我想通了。事实证明,acts_as_taggable 不会自动为您提供 tag_list 的访问器。我在视图中的代码是正确的,但我需要添加

    attr_accessor :tag_list
    

    做照片模型。就那么简单。

    【讨论】:

    • 其实,由于访问标签列表的方式是通过:tags,所以使用attr_writer :tag_list 可能更合适。只是一个想法。
    • 再一次,无论出于何种原因, attr_writer :tag_list #does 不起作用。