0

事实上,@community 有 4 个标签,因此它不应该返回 nil 错误。
但是在这种情况下,它会像这样返回 nil 错误。为什么以及如何解决?

ActionView::Template::Error (undefined method `+' for nil:NilClass):

我的代码

<% @community.tags.each do |tag| %><% tag_strings = tag_strings + tag.name + "," %><% end %>
<%= render 'layouts/twitter', :tag => tag_strings + @community.community_name %>
4

3 回答 3

2

tag_strings迭代开始时未初始化。也许您想加入所有标签。如果是这样,请尝试 tag_strings = @community.tags.map(&:name).join(", ")

于 2013-02-22T13:22:25.747 回答
2

您可以像这样更巧妙地实现这一点:

<%= render 'layouts/twitter', :tag => @community.tags.collect(&:name).join(",") + @community.community_name %>
于 2013-02-22T13:25:08.700 回答
0

..或者更整洁...

class Community < ActiveRecord::Base
  def tags_string
    "#{tags.collect(&:name).join(',')} #{community_name}"
  end
end

= render 'layouts/twitter', tag: @community.tags_string
于 2013-02-22T13:37:13.220 回答