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">