适当的嵌入式Ruby代码编写

时间:2010-07-09 16:35:38

标签: ruby-on-rails ruby metadata haml

我想写这个:

 %meta{ :name => "keywords", :content => "#{@page_city}, #{truncate_words(@page_keywords, 7) || 'Meta, Words, Are, Dope, For, SEO'}"}

基本上它会查看是否存在具有页面城市或关键字的本地页面,并将其添加为元关键字。如果没有,它会说后者。

这有效,但唯一的问题是page_city出现后的第一个逗号。所以现在看来​​...... ..

 <meta content=', Meta, Words, Are, Dope, For, SEO' name='keywords' />

有没有人知道如何将“,”包含在嵌入变量中?

2 个答案:

答案 0 :(得分:2)

对于以下情况,您通常可以依靠数组:

- default_keywords = %w[ Meta Words Are Dope For SEO ]
- meta_content = [ @page_city, (truncate_words(@page_keywords, 7) || default_keywords) ]

%meta{ :name => "keywords", :content => meta_content.flatten.compact.join(',') }

Array#compact删除所有nil值以避免插入额外的逗号。

答案 1 :(得分:0)

你总是可以这样做:

#{@page_city + ', ' if @page_city}

就个人而言,我可能会采取不同的方法来解决这个问题:

@arg1 = 'foo'
@arg2 = 'bar'
@arg3 = 'baz'
[@arg1, @arg2, @arg3].join(", ")    # => "foo, bar, baz"