2016-08-09 5 views
2

rails serverを使っていくつかのhtml/cssの変更をプレビューしました。このエラーが発生したため、ghに共有されているウェブサイトのコードに入れましたが、いくつかのページにアクセスできません:ローカルホストのNoMethodError:3000

nilのために/メディア 未定義のメソッド `各」での

NoMethodError:NilClas

これは、ユーザーのプロファイル内の関数からページです。私はプロファイルページにアクセスすることができるように端末で偽のユーザーを作ったが、私がプロフィールの中に欲しいものは、そのエラーを与える。

これは、コードswowingの部分がある:Subject.whereは、おそらくあなたの範囲のインデックスが指定されているものよりも少ないレコードを返す

<div class="select_wrapper"> 

     <select name="trienal_id" id="" required> 

     <option value="" disabled>Trienal</option> 

     **<% Subject.where(discipline_type: 0)[1..3].each do |s| %>** 

      <option value="<%= s.id %>" <%= "selected" if @tri_id==s.id %>><%= s.name %></option> 

      <% end %> 

     </select> 

</div> 

+0

のようになります。あなたも偽の科目を作る必要がありますか? – Okomikeruko

答えて

4

だから、最も可能性の高いクエリSubject.where(discipline_type: 0)[1..3]結果が続いているblank array []を返していることはあなたがすべきundefined method each for nil:NilClas

になりますどのeachnilを踏襲しているIRB ($ irb)

> x = [] 
> x[0] 
=> nil 
> x[1] 
=> nil 

でこれを試してみてくださいlimit関数を使用する(検索するレコード数の制限を指定する)01例:

Subject.where(discipline_type: 0).limit(3) 

だからあなたのコードは、あなたが偽のユーザーを作っ述べ

<% Subject.where(discipline_type: 0).limit(3).each do |s| %> 
    <option value="<%= s.id %>" <%= "selected" if @tri_id==s.id %>><%= s.name %></option> 
<% end %> 
+0

あなたは正しいです、それは働いた! ありがとうございます。 –

0

。なぜあなたはそこに[1..3]を持っているのか分かりません。 Subject.whereでそれぞれを使用し、条件に基づいてさらに制限する必要がある場合は、where句に追加します。

<% Subject.where(discipline_type: 0).each do |s| %> 
    <!-- your code here --> 
<% end %>