首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拆分输入值并使结果对url友好。

拆分输入值并使结果对url友好。
EN

Stack Overflow用户
提问于 2011-05-30 20:53:26
回答 1查看 145关注 0票数 0

我有这个表单,其中用户可以输入标签(tag_list输入),如“图形设计,插图等。”然后,在我将这些标签保存到数据库之前,我想将它们转换为url友好字符串,比如"graphic-design“,这样我就可以在我的html中将它们作为类使用。我已经让它在用户只在字段中输入一个标签的情况下工作,比如“图形设计”,但是如果用户输入两个或更多的字段,我的代码就不能工作,我不知道如何让它工作。

有什么想法吗?

模型代码:

代码语言:javascript
复制
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

视图:

代码语言:javascript
复制
<% semantic_form_for @work do |f| %>
    <% f.inputs do %>
        <%= f.tag_list %>
        <%= f.input :tag_slug, :as => :hidden %>
    <% end %>
<% end %>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

代码语言:javascript
复制
match 'books/*section/:title' => 'books#show'

对于url books/foo/bar/baz,此路由将使用字符串foo/bar填充params[:section],因此您需要在/上对其执行split操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6176536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档