2013-02-06 37 views
0

我正在構建一個包含名稱,rating1,rating2和rating3的html表。評分1-3來自不同的名字。Rails 3每個都會忽略零值

resources :names do 
    resource :rat1,:rat2,:rat3 
end 

在我的HTML表格,我想包括在每個這些表的收視率,但我想自動跳過或忽略的零表。這是因爲:名稱可能只有一個:rat1而不是a:rat2或:rat3。我的看法應該是這樣的。

<table> 
     <thead>Name</thead> 
     <thead>Rating 1</thead> 
     <thead>Rating 2</thead> 
     <thead>Rating 3</thead> 
     <% @names.each do |name| %> 
     <tr> 
      <td><%= name.nametext %></td> 
      <td><%= name.rat1.rating %></td> 
      <td><%= name.rat2.rating %></td> 
      <td><%= name.rat3.rating %></td> 
     </tr> 
     <% end %> 
    </table> 

除了如果name.rat1是nil它要麼一個。)替換爲N/A的值或b。)將將此字段留空,繼續前進到下一個。

乾淨的方法是什麼?

::更新::

所以我的問題是,name.rat1是零和name.rat1.rating是無類的未定義的方法,以便這兩個選項都將拋出同樣的未定義的方法不論||是否爲零類錯誤或輔助方法。至少這就是我目前的測試顯示。任何其他選項?或不同的解決方法?我想避免必須像這樣爲每隻老鼠設置一個驗證循環1-3-3

<% unless name.rat1.nil? %> 
    <%= name.rat1.rating %> 
<% end %> 

必須有一個更簡單的方法。

回答

3

OFFTOPIC你的表結構是錯誤的。

<table> 
    <thead> 
    <tr> 
     <th>Name</th> 
     <th>Rating 1</th> 
     <th>Rating 2</th> 
     <th>Rating 3</th> 
    </tr> 
    </thead> 
    <tbody> 
    <% @names.each do |name| %> 
    <tr> 
     <td><%= name.nametext %></td> 
     <td><%= name.rat1.rating || 'N/A' %></td> 
     <td><%= name.rat2.rating || 'N/A' %></td> 
     <td><%= name.rat3.rating || 'N/A' %></td> 
    </tr> 
    <% end %> 
    </tbody> 
</table> 
+0

我欣賞幫助。結構是不正確的。它實際上並不是我的代碼的一部分。我只是想要一個簡單的例子。放在一起。 – capcode01

+0

謝謝:)我只是想指出來,讓你可以知道。 :) –

5

我可能會在names_helper.rb

def show_rating(rating) 
    if rating.present? 
    rating 
    else 
    "default value" 
    end 
end 

創建一個helper方法,然後在視圖中使用它:

<%= show_rating name.rat1.rating %> 
+0

偉大的建議:應該有<thead><tr><th>Name</th><th>Rating1</th>..so on..</tr></thead>

所以,你的情況,你可以在渲染的評價值作爲使用條件!我想我一直在圍繞這個概念跳舞。這將簡化一些事情。 – capcode01

+0

如果我想把它放在xml.tag中!像這樣'xml.tag!(「cell」,show_rating(name.rat1.rating))'你希望這個工作嗎?這似乎並不是我嘗試的時候。 – capcode01

+0

如果您打算在多個位置(視圖,控制器,模型,構建器等)使用它,您可能需要考慮一種模型方法。 – blamattina