rails - 显示时的参数作为tag.scope的标记

时间:2015-03-04 16:22:04

标签: ruby-on-rails ruby form-for strong-parameters acts-as-taggable-on

所以,我有一个Post模型,其中包含可标记和标记模型,我在其中定义了一个范围预定义的标签,称为“类别”。如此设置为true:

class Post < ActiveRecord::Base
  acts_as_taggable
end

class Tag < ActiveRecord::Base
  scope :categories, -> { where(categories: true) }
end

我现在想要显示一个表单,我的用户可以选择至少一个和最多三个预定义标签(Tag.categories),我的字段表格如下:

<%= f.label :tags, 'Categories' %>
<% Tag.categories.each do |tag| %>
  <%= check_box_tag "post[tag_list][]", tag.name, @post.tag_list.include?(tag.name) %> 
  <%= tag.name %>
<% end %>

<%= f.label :tags %>
<%= f.text_field :tag_list %>

我的想法是,我希望我的用户最多选择3个预定义标签(类别),同时根据需要添加多少个标签。我有10个预定义的标签,我将它们播种到Tag表并将其类别设置为true。

它适用于普通标签(当用户添加自己的标签时,或者如果标签已经存在,只会更新taggings_count),但我的预定义标签不会保存/更新计数。

在日志中,参数仅显示"tag_list"=>"tag1",其中tag1是用户输入的标签,但未选择tag.category&#34; Travel&#34;它被播种到Tag表中,因此没有更新&#34; Travel&#34;的tagging_count。

我环顾四周但却找不到合适的答案哦 - 我是一名RoR初学者。

我在3.4上使用act作为taggable,使用Rails 4.2。

0 个答案:

没有答案