Arrays .将数组映射为字符串

Arrays .将数组映射为字符串,arrays,ruby-on-rails,ruby,dictionary,Arrays,Ruby On Rails,Ruby,Dictionary,我在使用.map时返回了一个数组: <li class="mix <%= p.sectors.map {|s| "#{s.name}"} %> all"> 目前,我认为返回的结果是: <li class="mix ["Content Management System", "Web Design", "Web Development"] all mix_a

我在使用
.map
时返回了一个数组:

<li class="mix <%= p.sectors.map {|s| "#{s.name}"} %> all">
目前,我认为返回的结果是:

<li class="mix ["Content Management System", "Web Design", "Web Development"] all mix_all" </li>
  • 每个单词都被当作一个独立的类,所以网页设计现在是两个类而不是一个类

    有没有一种方法可以将Web设计作为一个类,或者我需要使用不同的命名约定(如Web设计)来实现这一点?

    这应该可以:

    mix <%= p.sectors.map { |s| s.name.gsub(/\s+/, '-') }.join(' ') %>
    
    mix
    
    这应该可以:

    mix <%= p.sectors.map { |s| s.name.gsub(/\s+/, '-') }.join(' ') %>
    
    mix
    
    类名中不能有空格。因此,您需要将短语转换为类名。类名通常是小写的(尽管这不是一个要求),并用连字符分隔(而不是下划线,尽管这也不是要求,只是一个约定)

    因此,您可以使用downcase和连字符将它们分隔开来,如下所示

    <li class="mix <%= p.sectors.map{|sector| sector.name.downcase.gsub(/[^a-z0-9\-]+/, '-') }.join(' ') %> all">
    
    然后将视图代码更改为

    <li class="mix <%= p.sectors.map(&:html_classname).join(' ') %> all">
    

  • 类名中不能有空格。因此,您需要将短语转换为类名。类名通常是小写的(尽管这不是一个要求),并用连字符分隔(而不是下划线,尽管这也不是要求,只是一个约定)

    因此,您可以使用downcase和连字符将它们分隔开来,如下所示

    <li class="mix <%= p.sectors.map{|sector| sector.name.downcase.gsub(/[^a-z0-9\-]+/, '-') }.join(' ') %> all">
    
    然后将视图代码更改为

    <li class="mix <%= p.sectors.map(&:html_classname).join(' ') %> all">
    

  • 谢谢,我请客:-),我接受一次默认时间限制。您能显示最终输出吗?我不明白it@ArupRakshit
    [“内容管理系统”、“Web设计”、“Web开发”].map{s | s.gsub(/\s/,'-')}
    =>[“内容管理系统”、“Web设计”、“Web开发”]
    回答得不错,但我会将其放在一个助手方法中。谢谢,工作很好:-),I ll accept once默认时间限制是否可以显示最终输出?我不明白it@ArupRakshit
    [“内容管理系统”、“网页设计”、“网页开发”].map{s | s.gsub(/\s/,'-')}
    =>[“内容管理系统”、“网页设计”、“网页开发”]
    回答得不错,但我会把它放在助手方法中。顺便问一下,你为什么要使用像
    “{s.name}”这样可怕的结构?“网页设计”是两个类,因为@MarekLipka引用了结构。你会有什么不同?我从那开始,但读到插值更有效?你在哪里读到的?顺便问一下,你为什么使用像
    “#{s.name}”
    ?“网页设计”这样可怕的结构“这两个类是因为@MarekLipka在构造方面……你会有什么不同?我从那开始,但读到插值更有效?你在哪里读到的?
    <li class="mix <%= p.sectors.map(&:html_classname).join(' ') %> all">