我有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列表,而不是我预期的技能名单。
我错过了什么?
答案 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,可以通过其他配置文件访问。