0

我想在我的关键字和纯文本中包含一个 rails 对象,但代码显然不是正确的方法......我该怎么做?

set_meta_tags :keywords => %w[keyword1 keyword2 #{params[:hospital]}]
4

2 回答 2

0

您可能想查看两个用于在元标记中包含 rails 对象的插件:

元魔法:https ://github.com/lassebunk/metamagic

头条:https ://github.com/mokolabs/headliner

编辑:对于元标记宝石

我通常做的是写一个元助手,我只是把它放在我的ApplicationHelper. 中,看起来像这样:

def meta(field = nil, list = [])
  field = field.to_s
  @meta ||= {
    'robots' => ['all'],
    'copyright' => ['My Copyright'],
    'content-language' => ['en'],
    'title' => [],
    'keywords' => []
  }

  if field.present?
    @meta[field] ||= []
    case list.class
      when Array then
        @meta[field] += list
      when String then
        @meta[field] += [list]
      else
        @meta[field] += [list]
    end

    case field
      when 'description' then
        content = truncate(strip_tags(h(@meta[field].join(', '))), :length => 255)
      else
        content = @meta[field].join(', ')
    end

    return raw(%(<meta #{att}="#{h(field)}" content="#{h(content)}"/>))
  else
    tags = ''
    @meta.each do |field, list|
      tags += meta(field)+"\n"
    end
    return tags.rstrip
  end
end

您可以通过在其中添加调用来简单地在视图中设置元标记meta()。因此,articles/show.html.erb您可以将其添加到视图的顶部:

<% meta(:title, @article.title) %>

在你的布局中,你添加它没有任何参数,所以它会吐出元标记。

<%= meta %>

或者让它输出一个单独的标签:

<%= meta(:title) %>

不过,我敢打赌,还有更优雅的解决方案。

但是,如果您正在寻找已经在 Rails 中实现的东西,那么您就不走运了。

谢谢。

于 2013-05-21T13:44:08.803 回答
0

在您的视图中尝试此操作,因为它对我有用(使用元标记 gem):

<% keywords [[@modelname.keyword1], [@modelname.keyword2]] %>

并且您可以通过将它们添加到以下格式的 ruby​​ 中来以文本格式添加其他关键字['keyword3']

于 2014-06-24T14:22:06.443 回答