在显示 ID 而不是名称时充当可标记对象

Acts As Taggable on Showing the ID instead of Name

我有 2 个模型,学生和个人资料。一个学生只能有一个个人资料。我在配置文件模型中设置了acts_as_taggable_on :skills

在个人资料的新建和编辑操作的部分形式中,我有这些代码行来添加技能(我正在使用带有 class taggable 的 select2 库):

# apps/views/profiles/_form.html.erb

<%= f.input :skill_list, input_html: { class: 'taggable', multiple: "multiple" }, collection: Profile.tag_counts_on(:skills) %>

然后在学生控制器显示动作中,我找到学生:

@student = Student.find(params[:id])

在学生视图的展示中,我可以有这些:

<%= @student.profile.skill_list %>

我尝试 运行 这个应用程序,我创建了一个新的学生帐户,然后创建了新的个人资料,添加了技能(到目前为止,技能表不会显示任何内容,因为我们没有技能标签),我点击了保存,它成功了。技能名单出现在学员展示页面

然后,我创建了另一个学生帐户并为学生创建了新的个人资料。到目前为止,技能表会显示我在之前的个人资料中添加的所有技能标签。所以,我可以通过选择可用的技能标签然后单击保存来自动完成。

但是,在学​​生展示视图中,我只看到了技能ID列表,而不是我预期的技能名称列表。

我错过了什么?

我读了这个 How to get a list of all tags while using the gem 'acts-as-taggable-on' in Rails (not the counts) 并在集合中使用了这个代码(部分形式):

ActsAsTaggableOn::Tagging.includes(:tag).where(context: 'skills').uniq.pluck(:name)

它正在运行。它将保存名称,而不是 ID,并且可以由另一个配置文件访问。