2017-06-28 23 views
-1

我目前正在爲軌道上的紅寶石戰艦遊戲做板。 我被困在如何更改表格單元格的顏色(取決於數組中的哪些值@actions是內部的。我嘗試使用case語句,並且if'statement在html.erb中,但我無法找到正確的語法而我想知道另一件事:我應該爲此做一個輔助方法和在HTML中使用它,而不是在那裏編碼根據使用erb的單元格值設置表單元格的不同顏色 - 在軌道上使用紅寶石

這裏是控制器:

class BoardsController < ApplicationController 
    def new 
     @actions = ['none', 'hit', 'miss', 'ship', 'special'] 
     @grid = [] 
     for row in 0..9 
      @grid.push([]) 
      for column in 0..9 
      @grid[row].push({ 
       'action' => @actions.sample 
      }) 
      end 
     end 
    end 
end 

這裏是視圖:

<table class="table table-striped table-bordered"> 
    <% for row in 0..9 %> 
     <tr> 
      <% for column in 0..9 %> 
       <td> 
        <%= @grid[row][column]['action'] %> 
       </td> 
      <% end %> 
     </tr> 
    <% end %> 
</table> 
+0

請編輯您的問題的帖子相關的代碼(即視圖和控制器)。 – Gerry

+0

歡迎來到這裏:)你需要在這裏發佈你的當前代碼。不是全部,只是關鍵部分。另外,快速拼寫檢查不會受到傷害。 –

+0

海事組織它可能是最簡單的分配相關單元類,並使用JavaScript來做樣式。 – engineerDave

回答

0

我認爲最簡單的soluti將會爲每個動作創建CSS類,例如:

<style> 
    .none { background-color: blue; } 
    .hit  { background-color: red; } 
    .miss { background-color: yellow; } 
    .ship { background-color: white; } 
    .special { background-color: green; } 
</style> 

然後只需添加動作(即, @grid[row][column]['action'])在class屬性爲td標籤:

<% for column in 0..9 %> 
    <td class="<%= @grid[row][column]['action'] %>"></td> 
<% end %> 

不相關的問題,但值得注意的是:你也應該選擇使用each,而不是for,是更地道。

例如,您的視圖代碼可以重構爲:

<table class="table table-striped table-bordered"> 
    <% (0..9).each do |row| %> 
    <tr> 
     <% (0..9).each do |column| %> 
     <td class="<%= @grid[row][column]['action'] %>"></td> 
     <% end %> 
    </tr> 
    <% end %> 
</table> 
+0

我在閱讀時寫下來,謝謝你的偉大答案!每一個新的信息在早期階段都很重要! 關心,B –

+0

@BobbyBonchev很高興幫助!如果有效,請不要忘記接受答案(點擊打勾)。 :)快樂的編碼! – Gerry

+1

再次感謝小費!祝你編程愉快! –

相關問題