我有这个表单,其中用户可以输入标签(tag_list输入),如“图形设计,插图等。”然后,在我将这些标签保存到数据库之前,我想将它们转换为url友好字符串,比如"graphic-design“,这样我就可以在我的html中将它们作为类使用。我已经让它在用户只在字段中输入一个标签的情况下工作,比如“图形设计”,但是如果用户输入两个或更多的字段,我的代码就不能工作,我不知道如何让它工作。
有什么想法吗?
模型代码:
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 %>发布于 2011-05-30 21:42:03
如果你想处理一个用逗号(或分号)分隔的标签列表,也许你需要拆分( self.tag_list.split(/\s*[;,]\s*/).collect {|s| s.gsub(/\s+/, '_').gsub(/[^\w\-]/, '')}.join(",") )或类似的(即在处理之前拆分用户输入)?如果self.tag_list是一个字符串,这应该可以解决这个问题。
上一个答案,为了便于对话
我误解了这个问题,所以我建议使用route globbing
match 'books/*section/:title' => 'books#show'对于url books/foo/bar/baz,此路由将使用字符串foo/bar填充params[:section],因此您需要在/上对其执行split操作。
https://stackoverflow.com/questions/6176536
复制相似问题