2016-08-09 95 views
2

我一直在使用rails服務器來預覽一些html/css的變化,我把這些變成了我的共享的網站代碼,但我無法訪問某些頁面,因爲我得到這個錯誤:本地主機中的NoMethodError:3000

NoMethodError在/媒體 未定義的方法`每個」的零:NilClas

它是從用戶簡檔的功能的頁面;我在終端中創建了一個假用戶,這樣我就可以訪問配置文件頁面,但是我想要在配置文件內的那個頁面出現該錯誤。

這是代碼swowing的部分:

<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

試試這個在IRB ($ irb)

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

所以最有可能的查詢Subject.where(discipline_type: 0)將返回blank array []隨後是[1..3]結果之後eachnil這將導致undefined method each for nil:NilClas

你應該使用limit函數(它指定了要檢索的記錄數限制) 例如

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

Subject.where很可能返回比你的範圍內指數已經指定了什麼少的記錄。不知道你爲什麼在那裏有[1..3]。如果您需要根據標準對其進行更多限制,請在您的Subject.where中使用each,然後將其添加到where子句中。

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