在显示ID而不是名称时作为Taggable使用

时间:2016-03-12 00:51:09

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

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

在配置文件的新建和编辑操作的部分表单中,我有这些代码行来添加技能(我使用带有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列表,而不是我预期的技能名单。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

我读了这个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,可以通过其他配置文件访问。