2015-04-22 125 views
1

我開發了三類rails應用程序。Rails顯示錶格數據

class Location < ActiveRecord::Base 
    has_many :observations 

end 

class Observation < ActiveRecord::Base 
    belongs_to :location 
    has_one :rainfall 
    has_one :temperature 
    has_one :winddirection 
    has_one :windspeed 
    has_one :dewpoint 

end 


class Rainfall < ActiveRecord::Base 
    belongs_to :observation 

end 

Railfall通過一個observation_id有關觀察和觀測通過LOCATION_ID相關位置。

如果我去安慰,並鍵入類似: Location.all.first.observations.first.rainfall.value 它返回我降雨

不過的值列中的數據時,我想,所有這些都在一個表,並在我看來/位置/ index.html.erb軌的信息,我把:

<tbody> 
    <% @locations.each do |location| %> 
     <tr> 

     <td><%= location.name %></td> 



     <% unless @observations = nil %> 

     <% location.observations.each do |obs| %> 
     <td><%= obs.name %></td> 

     <% unless @rainfalls = nil %> 
     <td><%= obs.rainfalls.value %></td> 


    <% end %> 
    <% end %> 

我得到一個錯誤:

undefined method `rainfalls' for Observation:0x00000004219068> 

我已經花了最後5個小時嘗試我所能做的一切,並得到一絲沮喪......任何想法?

請注意我有一個位置控制器,但觀察和降雨量是作爲模型生成的,所以不要。我以爲我需要添加一些東西到我的位置控制器,只是不能解決什麼問題,我不確定它爲什麼會在控制檯中返回正確的數據,只是在應用程序中沒有。

+1

它應該是** **降雨,因爲它是一個** ** HAS_ONE關係 – Abhi

+1

只是我自己的'Observation',你真的需要所有這些關係?看起來像所有這些'has_one'關係可能只是'Observation'模型中的字段。 – Matt

回答

5

Observation.has_one :rainfall,所以它應該是:

<%= obs.rainfall.value %> 
+0

感謝您的建議,錯誤現在更改爲:未定義的方法'值'爲零:NilClass –

+1

使用'<%= obs.rainfall.try(:value)%>' – Nithin

+0

@ user2851268這意味着沒有「降雨量」相關至少有一個「觀察」記錄。要麼確保始終存在「降雨」,要麼遵循Nithin的建議。 –

0

你有一對一的關係,不是的has_many。更換

<%= obs.rainfalls.value %> 

通過

<%= obs.rainfall.value %>