获取nil:NIL类的模板::错误(未定义的方法'each')

时间:2012-08-28 13:37:06

标签: ruby-on-rails

查看: -

  <% @dating_advices.each do |da| %>
   <% if da['is-displayed'][0]['content'] == 'true' %>
   <div class="dating_advice">
      <h4><%= da['title'][0] %></h4>
      <p><b><%= da['author'][0] %></b></p>
      <p><%= da['content'] %></p>
   </div>
   <hr>
  <% end %>
 <% end %>

控制器: -

def dating_advices
@current_menu = "MatchMasters"
logger.debug "*** Current site id: #{@current_site.id}"
#@hide_quick_search = true

@passed_args = {
    'event_action' => 'ws',
    'site_id' => @current_site.site_id
}
result = call_dating_advices_ws(@passed_args)
if result && result['errorcode'][0] == 'success'
  @dating_advices = result['payload'][0]['payload']
 end
end

现在当我点击我网页上的约会建议时,它会出现错误&#34;获取模板::错误(未定义的方法&#39;每个&#39;)为nil:NIL Class&#34;

1 个答案:

答案 0 :(得分:0)

你可能没有得到任何@dating_advices - 这意味着你在一个不存在的实例var上调用每个。

编写控制器的方式,如果未定义结果变量,则永远不会定义@dating_advices

您可以使用@dataing_advices = [](或散列 - 使用.each方法的任何内容)快速修补它,并找出控制器失败的原因。

您可以执行类似

的操作
if result && result['errorcode'][0] == 'success'
   ... your dating advice code
else
   raise result
   (or @dating_advice = {})
end

基本上您需要始终定义@dating_advice或者您需要处理未在视图中定义的值。