2017-06-28 3 views
-1

現在、レール上のルーフィーの戦艦ゲーム用のボードを行っています。 私はテーブルセルの色を変更する方法についていません(配列@actionsの中のどれが内部にあるかによって異なります)。html.erbのcase文とif'statementを使って試しましたが、 。そして、私は疑問に思って別のもの:?私は、このためのヘルパーメソッドを実行し、代わりにそこでのコーディングの、HTMLでそれを使用する必要がありますセルの値に応じてテーブルセルのスタイルを変えます。レール上でerb-rubyを使用します。

はここで、コントローラである:ここでは

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

ようこそSO :)あなたの現在のコードをここに掲載する必要があります。それだけではなく、重要な部分です。また、迅速なスペルチェックでも問題はありません。 –

+0

IMOおそらく、関連するセルにクラスを割り当て、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']は)tdタグのclass属性で:

<% 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

もう一度チップに感謝します!ハッピーコーディングもあなたに! –

関連する問題