私はいくつかのビジネスルールを持つ製品コンフィグレータを構築しようとしています。 私は2つのモデルを持っています。一つは製品、もう一つはコンポーネントです。製品には多くのコンポーネントがありますが、同じコンポーネントを異なる製品で使用することができます。トリガーのあるネストされたフォーム
私は
--inコントローラをモデルとの関係などを持っており、製品のコントローラで私のショーのビューを構築しようとしている
def show
@product = Product.find(params[:id])
@productelements = Product.find(params[:id]).elements
end
--inビュー
<% @productelements.each do |p| %>
<li><%= p.name </li>
<li><%= p.quantity </li>
<% end %>
ので、はるかに良い、それは特定のルールを保持する必要があることを除いて。これは、コンピュータのような製品を に設定できるようにするためです。数量はユーザ定義(ある場合)ですが、 他の要素に影響する可能性があります。
Element Quantity
Processor A 1
RAM in GB 2
HDD Type B 2
ユーザーがプロセッサBにプロセッサを変更することができますが、この場合はHDDの数量は、これは単なる説明することである1に変更する必要があります。たとえば、私は以下の持っている場合。 - 要素をフォームにループする方法を説明しています。 - このループを要素にフォームにラップします。 - 変更に応じてフォームを作成し、必要な場所で検証および調整する関数を呼び出します。 - 検証されたフィールドで製品をレンダリングします。
アドバイスはありますか?あるいは、アプローチが現実的ではないかもしれませんか? 多くの製品とルールがあることを覚えておいてください。コントローラの中にケースステートメントを作成したくありませんでした。
ありがとうございます!
意味があります、ありがとうございます!私は次のことについて少し心配しています。必ずしもユーザーがHDDに必要な数量を入力する必要はなく、変更に依存するフィールドを自分で調整してください。このように、私はこれを行う唯一の方法は、フォームからのタグを使用してJavaScript上になることを理解しています。しかし、これもまた、ページのソースコードを見ることができる誰もが自分の設定ルールを公開します。とにかく、フォーム呼び出しを変更時に行うようにして、もう一度レンダリングしますが、今回はDBに問い合わせることなくですか?さもなければ、私は同じデフォルトビューを得ることになりますか? – Lievcin
ビジネスルールはデータベースではなく、モジュール内に存在するため、残ったフィールドの値に基づいて値を調整するために簡単にajax呼び出しを行うことができます。この方法では、クライアント側には存在しないため、データベースを照会する必要はありません。 –
あなたの答えSrdjanに感謝します。これがどのように行われているかを確認するためにお勧めできるリソースはありますか?私はモジュールメソッドと結果へのajax呼び出しを意味しますか? – Lievcin