0

看法:-

  <% @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

现在,当我单击网页上的约会建议时,它会出现错误“Getting Template::Error (Undefined method 'each') for nil:NIL Class”

4

1 回答 1

0

您可能没有得到任何@dating_advices信息——这意味着您正在调用每个不存在的实例 var。

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

你可以用一个(或一个哈希——任何带有 .each 方法的东西)快速修补它,@dataing_advices = []并找出你的控制器失败的原因。

你可以做类似的事情

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

基本上你需要总是定义@dating_advice或者你需要处理你的视图中没有定义的值。

于 2012-08-28T13:38:31.760 回答