2016-08-29 15 views
-1

私は次のエラーを持っている:あなたはそれが何をすることができ未定義のメソッド「各」

where line #14 raised:

undefined method `each' for nil:NilClass Trace of template inclusion: app/views/cursos/search.html.erb

知っていますか?

私の見解は以下のとおりです。

<% @cursose.each do |curso| %> 
     <tr> 
     <td><%= curso.nombre %></td> 
     <td> 
      <ul class="list-unstyled"> 
      <%= link_to 'Show', curso %> 
      </ul> 
     </td> 
     </tr> 
    <% end %> 

私のコントローラは、次のとおりです。

def search 
    @cursose = Curso.search(params[:search]) 
    end 

私のモデルは次のとおりです。

<div class="navbar-wagon-right hidden-xs hidden-sm"> 

    <%= form_tag(searchCursos_path, :method => "get", id: "search" , class: 'navbar-wagon-search') do %> 
     <%= text_field_tag :search, params[:search], placeholder: "Buscar Cursos", class: 'navbar-wagon-search-input'%> 

     <button type="submit" class="navbar-wagon-search-btn"> 
     <i class="fa fa-search"></i> 
     </button> 
    <% end %> 
</div> 

 def self.search(search) 
    where("nombre LIKE ?", "%#{search}%") 
    end 

私はこのような関数を呼び出します

私は@cursoseを検索機能で1回だけ宣言しました。私はそれが間違いであることを見ましたが、私はそれを持っています。

ありがとうございました!

+1

コントローラ内の '@curse'変数を検査して、' search'呼び出しの直後に 'nil'を確認しましたか? '@cursose = Curso.search(params [:search])'の下に 'raise @ cursose.inspect'呼び出しを直接追加し、エラーメッセージに表示されているものを見てください。 –

答えて

2

@cursose変数がnilであるためです。変数が何かを返すかどうかを確認します。 nilを返す場合は、初期化する部分を探します。

+0

私はユーザーを検索するために同じコードシーケンスを持っていますし、動作します。どこで@cursoseの初期化を見ることができますか? – hernan

+0

コントローラ内で初期化する – hernan

+0

この場合、 '@curse'が' [] 'でないことを確認してください。これがエラーの原因です。空のリストを反復することはできません。 'params [:search]'の値を持たない時に対応してください。 – Hanmaslah

関連する問題