问题描述
||
我有这样一种表单,用户可以在其中输入\“图形设计,插图等\”这样的标签(tag_list输入),然后在保存之前将这些标签转换为url友好字符串,例如\“ graphic-design \”到数据库,以便我可以在我的html中将它们用作类。我已经在用户仅在字段中输入一个标签(例如\“图形设计\”)的情况下起作用,但是如果用户输入2个或更多字段,我的代码将无法工作,我也不知道如何让它工作。
有任何想法吗?
型号代码:
class Work < ActiveRecord::Base
before_save :url_friendly_tags
def url_friendly_tags
self.tag_slug = self.tag_list.to_s.gsub(/\\s+/,\'_\').gsub(/[^\\w\\-]/,\'\')
end
end
风景:
<% semantic_form_for @work do |f| %>
<% f.inputs do %>
<%= f.tag_list %>
<%= f.input :tag_slug,:as => :hidden %>
<% end %>
<% end %>
解决方法
如果要处理用逗号(或分号)分隔的标签列表,也许您需要
self.tag_list.split(/\\s*[;,]\\s*/).collect {|s| s.gsub(/\\s+/,\'_\').gsub(/[^\\w\\-]/,\'\')}.join(\",\")
或类似的字符(即在处理之前拆分用户输入)?假设ѭ3a是一个字符串,这应该可以解决问题。
先前的答案,为了对话
我误解了这个问题,所以我建议使用路由遍历:
match \'books/*section/:title\' => \'books#show\'
对于URLbooks/foo/bar/baz
,此路由将在a6ѭ中填充字符串foo/bar
,因此您需要在/
上将其split
。