問題タブ [nested-forms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
5795 参照

javascript - accepts_nested_attributes_forを使用したRailsの3レベルのネストされたフォーム

accepts_nested_attributes_forRailsアプリケーションで動的なマルチモデルフォームを実装しようとしています。私は2レベルの実装を示すEloyDuranの複雑なフォームの例に従っていますが、これを3レベルに拡張しようとしています。accepts_nested_attributes_for3レベルフォームのサポートはありますか?サンプルアプリを拡張する方法を教えてもらえますか?

第3レベルではJavaScriptが部分的に機能しています(何らかの理由で常に機能するとは限りません)が、第3レベルのオブジェクトを保存できません。各属性に渡されるパラメータ名は次のとおりです。

ここで、曽祖父母はフォームの対象であり、祖父母は第1レベル、親は第2レベル、オブジェクトは第3レベル(私が保存しようとしているもの)です。

ありがとう、私はどんなポインタにも感謝します。

0 投票する
2 に答える
13090 参照

ruby-on-rails - Rails - 単一フォーム上の複数モデルに対するユーザー入力 - 方法

これは基本的にネストされたフォームの質問ですが、親モデルに属するフィールドは 1 つだけです。私のデータ入力フォームはモデルのデータを収集しますが、詳細レコードで作成される親レコードに実際に入るデータ要素/値 (UserID) も 1 つ収集する必要があります。

私の知る限り、Rails は各フォーム フィールドがモデルにマップされることを想定しており、個別に使用するバインドされていないデータ入力フィールドを作成する必要があります。

このデフォルトの動作をオーバーライドして、「フリー フォーム/非バインド フィールド」を作成するにはどうすればよいですか?

ティア、紀元前

0 投票する
1 に答える
4532 参照

ruby-on-rails - Railsでaccepts_nested_attributes_for+一括割り当て保護を使用する

あなたがこの構造を持っているとしましょう:

Tvのユーザーは意図的にアクセスできないことに注意してください。つまり、家、部屋、テレビを1ページで入力できるトリプルネストフォームがあります。

コントローラのcreateメソッドは次のとおりです。

質問:世界でどのようにuser_id各テレビにデータを入力しますか(current_user.idから取得する必要があります)?良い習慣は何ですか?

これが私がこれで見るcatch22です。

  1. ハッシュuser_idsに直接入力しparamsます(かなり深くネストされています)
    • user_ids一括割り当てできないため、保存は失敗します
  2. #saveが終了した後、すべてのテレビのユーザーにデータを入力します
    • user_id存在する必要があるため、保存は失敗します
    • 上記をバイパスしても、テレビはしばらくの間IDなしになります-吸う

これを行うための適切な方法はありますか?

0 投票する
2 に答える
3262 参照

ruby-on-rails - Rails: 多くの新しいオブジェクトをネストされた形式で保存する

私は2つのモデルを持っています:

ビデオ:

d

サムネイル:

動画を検索するために YouTubeG gem を使用しています。

検索によって返される各ビデオには、ビューにフォームがあります。

f.fields_for :thumbnails は生成します <input type="hidden" value="http://i.ytimg.com/vi/s8eigkwmMEo/0.jpg" name="video[thumbnails][url]" id="video_thumbnails_url"/>

このビデオのすべてのサムネイルを保存したいので、これは間違っているようです。

保存しようとすると、

ActiveRecord::VideosController の AssociationTypeMismatch#create

パラメーター:

{"commit"=>"保存", "video"=>{"name"=>"カラヤン - ベートーベン交響曲第 7 番", "url"=>"s8eigkwmMEo", "user_id"=>"1","サムネイル"=>{"url"=>" http://i.ytimg.com/vi/s8eigkwmMEo/0.jpg "}}} < 4 つのサムネイルがあるはずです

0 投票する
1 に答える
3678 参照

ruby-on-rails - Rails: ネストされたフォーム オブジェクトのラジオ ボタンの選択

photo_album の更新中に写真を保存する際に、Rails のネストされたフォーム機能を使用する photo_album の次のフォームがあります。そして、ラジオボタンの値の選択に問題があります。写真の 1 つだけをアルバム カバーとして選択できるようにしたいのですが、Rails がフォーム要素の ID と名前を生成する方法により、すべての写真をアルバム カバーとして選択できます。回避策はありますか?

以下は、ラジオボタン用にレール(問題の一部)によって生成されたhtmlです。

0 投票する
1 に答える
590 参照

ruby-on-rails - collection_select での NoMethodError

私は:has_many :through関係のためのフォームを構築しています:

Employmentモデルにはフィールドと:account_idが含まれています:person_id

アカウント フォーム内に、次を追加します。

collection_select、またはselect同様に、私が与えた順列では、 NoMethodError 例外で失敗します:

person_idフィールドが存在しないかのように見えますが、create メソッド:account_id:person_id完全に呼び出すことができます。

0 投票する
1 に答える
406 参照

ruby-on-rails - インスタンスとその関連付けの監査とモデルライフサイクル管理?

訴訟のリクエストを追跡するアプリケーションを作成しようとしています。主なモデルはCaseであり、has_manySubject、Keywords、Notes、およびEvidences(has_manyCustodyLogs)です。アプリケーションは法律に関連しているため、通常とは異なる要件がいくつかあります。

  • CRUD操作は、操作が何であったか、アクターが誰であったか、操作がいつ発生したかなど、ログに記録する必要があります
  • データを検証するための何らかの方法が必要です(つまり、レコードのMD5チェックサムを記録する)
  • 一部のデータはライトワンスである必要があります(つまり、アプリは監査ログエントリを作成できますが、そのログはその後アプリケーション内から編集または削除できません)
  • 関連するオブジェクトへの変更は、おそらくネスト全体でログに記録する必要があります。たとえば、CustodyLogをエビデンスに追加するには、それ自体のログ、そのエビデンスのログ、および親ケースのログが必要です。これは、Caseモデルデータ自体が最後に変更されたときだけでなく、Caseの最終更新タイムスタンプが実際の最後の更新を正確に反映するようにするためです。

私はこれを少しは機能させていますが、問題が発生しています。認証は外部のWebシングルサインオンサービスによって処理されているため、ログインしているユーザーのIDに対する唯一の可視性はリクエスト変数にあります。たとえば、コールバックを介してモデルに監査ログを設定すると、すべてのデータ変更がログに記録されることはほぼ確実ですが、モデルには要求変数が表示されないため、ユーザーIDをログに記録できません。これにより、ステートマシンへの変更(現在はstate_machineプラグインを使用)がログに記録されます。

一方、監査ログをアプリケーションコントローラーに配置すると、すべてのCRUD操作がログに記録されることを確認できなくなります(たとえば、Subject.createを呼び出すCaseモデルのコードはログに記録されません)。 。また、状態の変化も失われると思います。

ログインしたユーザーのユーザーIDが記録されるように、すべてのCRUD操作がアソシエーションツリー全体にログに記録されるようにする方法はありますか?

0 投票する
1 に答える
575 参照

ruby-on-rails - ネストされたオブジェクト モデル、ビュー内のループ、誤った入力によってビューが奇妙にループする

この問題についてかなり長い間グーグルでテストしてきましたが、答えが見つかりません。

管理者がアップロードした調査をサーバーするサイトがあります。これらの調査は調査サイクルに属し、回答は回答に属します。

コントローラーは、ネストされたオブジェクトの非常に基本的なものです

render :action => "new" は create でオブジェクトを使用しているように見えるため、if 内のすべて。

私がパーシャルで扱うビュー

new.html.erb

質問は多種多様なものになる可能性があるため、ビューパーシャルの内容はかなり肥大化しています

さて、問題について!ユーザーがこのフォームを送信すると、明らかにフォームが再度レンダリングされます(私が抱えているこの問題をデバッグするために、応答するコントローラーの create-action に 'render :action => "new" を強制します)。同じフォームを再度取得する代わりに、質問は x 倍多くレンダリングされます。ここで、8 つの質問の場合、x は 9 です。たとえば、8 つの質問を含む短いアンケート サイクルでは、最初の送信後に各質問が 9 回表示されます。ページのソースを見ると、最初の送信入力 ID に 0 から 8、次に 0 から 80、そして突然 0 から 728 があります。

これを説明します:

ユーザーが送信をクリックすると、次のようになります。

これはバグか何かでしょうか、それとも私が何か間違ったことをしているでしょうか?

必要に応じて、さらに多くのものを投稿できます。

0 投票する
1 に答える
1058 参照

sql - Ruby Rails Nested Records

私がやろうとしていることさえ可能かどうかはわかりませんが、ここに行きます。

次のテーブルが定義されたSQLデータベースがあります(SQLで関連するテーブルのみを表示しています)。

ご覧のとおり、「顧客」テーブルは、住所との1対2の関係を定義します(1つは請求先住所用、もう1つは郵便/配送先住所用)。ここでの考え方は2つあります。

  1. リレーションシップを使用してテーブルをアドレス指定することにより、重複するアドレスフィールドをcustomersテーブルに保存します。
  2. 後で、住所IDを使用して、「注文」の配送先住所を簡単に入力できます。

次に、レール付きのActiveRecordsを使用してこれをモデル化します。これまでのところ、私は次のものを持っています:

1)「顧客」モデル:

2)アドレスモデル(デフォルト):

3)カスタマーコントローラー(関連するメソッドのみが表示されます。つまり、新規および作成):

3)請求先住所も含む新しい顧客を作成するためのネストされたフォーム。

今問題に。このフォームに記入して新しいレコードの作成に進むと、次のエラーが発生します。

このことから、請求先住所は顧客の前に作成されていないことがわかります。私は(おそらく非常に素朴に)アクティブレコードが顧客と住所レコードの関係を認識し、新しいレコードを作成するために正しい操作を行うと思いました。これは明らかにそうではありません。

どうすればこれを実現できますか?最初にアドレスレコードを保存してから、カスタマーコントローラーで使用するそのレコードのIDを取得するために、ロジックがカスタマーコントローラーにある必要があると想定しています。すべてトランザクション内ですか?それとも、DBを悪い方法でモデル化したばかりですか?

このすべてのコードが多すぎないことを願っていますが、私はできるだけ多くのコンテキストを提供したいと思いました。