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

Web ページでデートのアドバイスをクリックすると、"Getting Template::Error (Undefined method 'each') for nil:NIL Class" というエラーが表示されます。

4

1 に答える 1

0

おそらく何も得られ@dating_advicesませんでした。これは、存在しないインスタンス var で each を呼び出していることを意味します。

結果変数が定義されていない場合、コントローラーの記述方法@dating_advicesは定義されません。

@dataing_advices = [](またはハッシュ - .each メソッドを使用するもの)ですばやくパッチを適用し、コントローラーが失敗する理由を突き止めることができます。

次のようなことができます

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 に答える