したがって、Rails アプリでは、データベース、ハード ドライブにテーブルがあり、ハード ドライブごとにさまざまな数のヘッドとプラッターがあります。ハード ドライブを作成または編集するときに、a) 必要な数のヘッド ステータス フォームとプラッター ステータス フォームを動的に表示するか、b) 適切な数のヘッド ステータス フォームとステータス フォームが連続して表示されるページにユーザーを誘導したいページ。私はオプションaを好みますが、それを機能させるには、カスタムJavaScriptまたは何かが必要になると思います(プラグインがない限り、実際には実行できません。JavaScriptはわかりません)。本当に、プラッターとヘッドのステータスが入力されていないハード ドライブを拒否したいと思います。
(変数名はもちろんhard_drive、platter_status、head_status)
たとえば、ラップトップ ドライブがある場合、ドライブを作成するときにヘッドとプラッターが 1 つあると定義します。ヘッド & プラッター カウントのコンボボックスの値が変更された場合、プラッター & ヘッド ステータスのフォームを表示します。作成ボタンが押されると、データを使用してデータベースに hard_drive が作成され、必要に応じて platter_status および head_status 項目がそれぞれ作成されます。
どうすればいいですか?ビューで、コンボ ボックスの変更を検出し、コンボ ボックスの値を使用してレイアウトを表示するものを追加する必要があることはわかっています。
これと性質が似ている
編集1: だから、私はこれを持っていますが、これまでのところ機能していませんが、正しい考えがあります. javascript を使用して動的に html を追加することについて話しているスレッドをいくつか見つけました。
<div class="field" id="head_count" >
<label for="hard_drive_head_count">Head count</label><br />
<input id="hard_drive_head_count" name="hard_drive[head_count]" type="number" value="0" />
<script type="text/javascript">
var input = document.getElementById('hard_drive_head_count'),
events = [
"input",
];
events.map(function(ev) {
input.addEventListener(ev, function() {
console.log(ev + ' => ' + input.value);
if (parseInt(input.value) === 1) {
document.getElementById('platter_statuses').innerHTML= "howdy";
} else {
document.getElementById('platter_statuses').innerHTML="";
}
}, false);
});
</script>
</div>
<label for="platter_status">Platter status</label><br />
<div class="field" id="platter_statuses" >
</div>
しかし、これを手に入れたので、問題は次のようになります- platter_status ビューの _form.html.erb からのフォームを使用して、データベースからすべて入力したものをすばやく入力するにはどうすればよいですか? 動的ルビーを使用して別の方法で考えましたが、引数(プラッター番号とドライブID)を渡す方法が正確にわかりません。これにより、データベースに何を入力するかがわかり、わかりませんplatter_status ビューに解決されるように <%= @SOMETHING_HERE %> の @ の後に何を置くか...