私はプロダクトコンフィギュレータを設計中です。問題は、文字通り、すべての製品に複数のコンポーネントがあり、相互にやりとりする方法がかなりランダムであるように見えました。したがって、ある部分の量を変更した場合は、自動的に調整する必要があります。Jsがやっていることを追跡しているレール
これらの規則とこれらの規則が頻繁に変更されるという事実のため、私はそれらをJs関数にすることに決めました。 (ここではフィールド名ランダムである)
<% @counter = 0 %>
<% @people.each do |p| %>
<% @counter += 1 %>
<tr>
<%= form_for(:p, :remote => true) do |f| %>
<th><%= f.label(p.name) %></th>
<th><%= f.label(p.country.name) %></th>
<th><%= f.label(p.state.name) %></th>
<th id="<%= "money_" + @counter.to_s %>"> <%= f.select(:money, 1..10, :selected => p.money)%></th>
<th id="<%= "comment_" + @counter.to_s %>"><%=p.money_comment%></th>
<% end %>
<% end %>
と私はこのように、ロードされるファイル内のJs機能を持っている:私はこれらのようなレールのものを持って
function change_people() {
money1 = $('money_1').children[0].value;
$('comment_2').update((money1 == 5) ? "selected 5!" : 'why not 5?');
}
document.observe('dom:loaded', function() {
change_people();
$('money_1').children[0].observe('change', change_people);
});
これはうまくいくので、ユーザーが選択したものに応じて値を変更することができましたが、ここに質問があります。レールはこれについてどのように知っていますか? RailsはDBからの値などのデフォルトの人数を持ってきましたが、カートに追加したい場合はどうすれば新しい値が得られるでしょうか?
ありがとうございます!
感謝を。私はまだDBにさまざまな範囲とオプションを適切に格納する方法を見つけ出していない。デフォルト値は問題ありません。しかし、どのように私は明らかにこれらのルールを与える必要があると思いますかDB内のすべての可能なフォームを格納することはあまりにも多くです。ちょっとした背景を与えるために、UIはExcelで、 "ルール"は文字列としてdbに保存されます。ユーザーが製品を選択すると、これらの文字列(数式に優れている)がもたらされるため、何らかの要素が変化したときに特定の要素が動的になります。 – Lievcin
私は、これらの数式を調整できる頻度に依存すると思います。もしそれらが非常に静的であれば、それらを直接javascriptにコード化し、コードベースでそれを維持することができます。頻繁に変更された場合は、DBに保存し、管理用の管理インタフェースを使用できます。ページのロード時に、DBに対してクエリをクエリしてクライアントに渡すことができます。また、関連するルールをRailsからJavascriptにロードするように製品が選択されたときに、AJAX呼び出しを行うこともできます。 –
ルールは頻繁に変更されるだけでなく、独自のルールで新製品が導入されます。 「頻繁に変更された場合は、DBに格納して管理するための管理インターフェースがある」と言うとき、jsコードまたはルビコードとして保存することを意味しますか? – Lievcin