“提供”模型的方法,而不是字符串

时间:2014-09-12 19:21:25

标签: ruby-on-rails

我想将meta关键字添加到网站的<head>

application.rb我有:

<meta name="keywords" content="<%= meta_tags(yield(:keywords)) %>">

在我的Point模型中,我有7个案例(俄语):主格,属格,配音,指控,消融,介词。所有这些都是字符串,我想在meta关键字中使用它们。所以,我需要provide不是字符串,而是需要使用它的模型:

def meta_tags(point)
  if point.empty?
    'keyword, keyword, ... , keyword'
  else
    "keyword #{point.nominative}, keyword #{point.genitive}, ..."
  end
end

points/show.html.erb我有:

<% provide(:keywords, @point) %>

但我收到错误:

undefined method `nominative' for "#&lt;Point:0x000001082964f0&gt;":ActiveSupport::SafeBuffer

因此,rails将@point作为字符串,但不作为对象。

谢谢!

1 个答案:

答案 0 :(得分:0)

yield :keywords正在返回String。试试这个:

<meta name="keywords" content="<%= yield(:keywords) %>">

和这个

<% provide(:keywords, meta_tags(@point)) %>