拆分输入的值并使结果对URL友好

问题描述

|| 我有这样一种表单,用户可以在其中输入\“图形设计,插图等\”这样的标签(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\'
对于URL
books/foo/bar/baz
,此路由将在a6ѭ中填充字符串
foo/bar
,因此您需要在
/
上将其
split
。