使用代码:
<div class="field">
<%= form_for [@tagable, Tag.new] do |f| %>
<p>
<%= f.label :Tag %><br />
<%= f.text_field :tag_list %>
<p>
<div class="actions">
<%= f.submit "Create Product", class: "btn btn-large btn-primary" %>
</div>
<% end %>
</div>
我在我的Tag模型中定义了方法:
def tag_list
tags.map(&:name).join(", ")
end
def tag_list=(tags_string)
tag_names = tags_string.split(",").collect{|s| s.strip.downcase}.uniq
logger.debug "#{tag_names}\n\n\n\n\n\n"
tag_names.each do |tag_name|
#tag = Tag.find_or_initialize_by_name(tag_name)
#tag.save
tag = Tag.find_or_create_by_name(tag_name)
logger.debug "#{tag}\n\n\n\n\n\n"
end
end
“find_or_create ....”中的代码行不起作用,它在控制台似乎工作,但最后代码带来了一个名称属性为nil。像这样:
INSERT INTO "tags" ("created_at", "name", "tagable_id", "tagable_type", "updated_at") VALUES (?, ?, ?, ?, ?) [["created_at", Fri, 19 Oct 2012 01:04:31 UTC +00:00], ["name", nil], ["tagable_id", 19], ["tagable_type", "Product"], ["updated_at", Fri, 19 Oct 2012 01:04:31 UTC +00:00]]
在该代码之前,我在控制台上打印了我想要保存的“标签”的内容:
Tag Load (0.1ms) SELECT "tags".* FROM "tags" WHERE "tags"."name" = 'musica' LIMIT 1
(0.0ms) begin transaction
(0.1ms) commit transaction
如何创建“tag_list”的每个标记? PS:我也尝试过“标签模型”中的评论代码
答案 0 :(得分:0)
根据我的理解,您正在显示text field
向任何taggable
添加标记。此文本字段可能包含标记列表(称为tag_list
)。提交表单后,taggable
将与这些标记相关联。
如果是这种情况,您可以尝试使用acts_as_taggable
plugin,默认情况下提供所需的tag_list
功能:)并提供丰富的选项。
一些参考链接
如果我错过了您的任何要求,请告诉我。