問題タブ [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 投票する
4 に答える
34743 参照

ruby-on-rails - レールのネストされたフォーム - has_many リレーションの属性へのアクセス

ユーザーとプロファイル モデルがあります。1 人のユーザーが複数のプロファイルを持つことができます。ユーザー作成プロセス中に、ユーザー モデルのプロファイル セクション (電話番号) から 1 つの情報だけにアクセスする必要があります。したがって、私はそれをやり遂げようとしていますattr_accessible。私の user.rb は次のようになります。

私が直面している問題は、user.rb のメソッドでゲッター メソッド profile_mobile_number を呼び出そうとすると (メソッドはプライベートですが、問題ではないと思います)、null 値を取得していることです。users/new.html.erb フォームで以下を使用します

私の質問は、これを行う正しい方法は何ですか? <% f.fields_for :profile do |ff| -%>orを使用する必要があります<% f.fields_for :profiles do |ff| -%>(2 番目は複数形であることに注意してください)。複数の :profiles を使用すると、フォームにフィールドが表示されません。ここで何が欠けていますか?モデル user.rb で使用する必要がある時制は何ですか? :profile_phone_number または :profiles_phone_number? ありがとう。

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

ruby-on-rails - アプリケーション全体の多くのページに配置されるネストされたフォーム

ネストされた属性を持つフォームがあり、さまざまなページに配置する必要があります。必ずしもそれが属するモデルではありません。だから私は大隊のショーページにこのフォームを持っています。ユーザー情報は問題なく作成されますが、ユーザーhas_manyロールとこれらの属性は作成されていません。私は他にもうまく機能するネストされたフォームをたくさん持っていますが、これを機能させるために何が欠けているのか完全には理解できません。

_role.html.erb

_form.html.erb

これは、ユーザーを作成したときに発生することです。

UsersController#createの処理(2010-02-14 22:15:16の127.0.0.1の場合)[POST]パラメーター:{"user" => {"name" => "Chirs"、 "roles" => {"name "=>" battalion "}、" company_id "=>" nil "、" position "=>" Battalion Commander "、" email "=>" slkdfj@dlkfj.com "、" battalion_id "=>" 1 "}、 "commit" => "Register"、 "action" => "create"、 "authenticity_token" => "PcGbsQNG7wKKPDZTM + JGry / a1aBWZuoyaCNwlqlCJ0g ="、 "controller" => "users"}

ロールの作成アクションをトリガーしません。

これは非常に単純なはずです。私の唯一の推測は、ユーザーモデルから離れることで問題が発生することです。form_for @battalionsにしてから、ユーザーをネストし、ロールをネストする必要があります。これは3つのレベルであり、正しくないように見えます。

どんな助けでも大歓迎です。

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

ruby-on-rails - フォームは、新しい属性に加えて既に読み込まれた属性を作成しています。最初の属性を無視するにはどうすればよいですか?

私のアプリケーションでは:

  1. サインオンする管理者ユーザーがいて、そのユーザーがロール (別のモデル) を持っている場合、declarative_authorization プラグインを使用して特定の領域へのアクセスを許可します。

  2. その管理者ユーザーは、システムに新しいユーザーを登録することもできます。これを行うと (Authlogic を使用して)、その新しいユーザーの役割を含むネストされたフォームに入力します。

つまり、管理ユーザーのロールが declarative_authorization によってロードされ、次に has_many_nested_attributes を使用するネストされたフォームがその既存のロールと新しいユーザーの新しいロールをロードしています (ユーザーは多くのロールを持つことができます)。

current_user に割り当てられたロールを無視し、新しいユーザーのフォームでのみロールを作成するように、作成中の新しいユーザーに伝える方法はありますか?

私はさまざまなことを調べてきましたが、これらがネストされた属性であることがより複雑になっているようです。

前もって感謝します。

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

ruby-on-rails - 曜日のある複雑なモデルのレールビルドメソッド

個々の部屋の価格を格納するためのネストされたモデルのセットがあります。

すなわち。

各モデルには、必要な accept_nested_attributes_for と has_many belongs_to の関連付けがあり、最初の作成で完全に機能するフォームとビルド メソッドがあります。

私の質問は、フィールドが存在しない場合はフィールドを構築するか、存在する場合はフィールドから読み取る(そして構築しない)、よりスマートなコントローラーを作成する方法です。現在、最初の入力に対してのみ機能します。それ以外の場合は、可能な数よりも多くのフィールドを構築しようとし、再送信時に中断します。

試した

room_rates のデータベース

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

ruby-on-rails - Railsの複雑なフォームとビルドによる順序付け

最近のRyan Bates スクリーンキャストに似た複雑なフォームを持っています

ただし、ネストされた要素は正常に機能します。このようなデータのグリッドを、その日の価格が入力されるフォームを介して作成または更新しています。私の問題は、彼らが1つ空白のままにしたときに始まります。nilを保存しないためのnested_attributes_forオプションがあり、特定の行に1つの値のみを保存すると機能しますが、正しい日を保存しますが、リロードすると間違った列に配置されます。値をフォームに並べる方法がわかりません。IE 水曜日の保存された値は、正しい行の月曜日の列に表示されます。行のすべての値を保存する場合、これは発生しません (完全に機能します)。

このようにDBにデータが格納されます

ID OBJECT_ID DAYOFWEEK PRICE以下のように表示されます

これらの値を構築または表示するコントローラーコードは次のようになります。

コントローラ

rooms.html.erb

rates.html.erb

room_rates モデル (フォームからのデータが送信される場所)

コンソールでの注文

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

ruby-on-rails - 複数の要素に依存するレール検証

私はいくつかの異なるモデルにaccepts_nested_attributes_forを使用してきましたが、奇妙な状況に陥っています。

最上位のモデルで空白の作成をスキップでき、最下位のモデルで個々のレコードの validate_presence を実行できますが、一連のレコードに対して最も複雑な検証を行うことは可能ですか?

部屋と料金のモデルがあります。客室には has_many Rates があり、accepts_nested_attributes_for Rates.

空白を取り除くことができます

しかし、各部屋には7つの異なるレコード(レート)があります..常に7つで、同じフォームから一度に送信されます。現在、彼らが 1 日だけ入力する場合は許可されます。ただし、7 つすべてが存在する必要があることを検証したいと思います。7 つすべてを入力して受け入れるか、1 つまたは 2 つだけを入力するとエラーが発生します。また、7 つすべてを完全に空白のままにしておくと、何もしません。

nested_attirbutes についてはまだこのようなものを見たことがないので、それが可能かどうか疑問に思っています。

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

ruby-on-rails - Railsでネストされた形式の既存の子レコードを省略する方法は?

私のアプリケーションでは、ユーザーは多くのプロジェクトを持っています。ユーザーが一度に多くのプロジェクトを作成できるように、「多くのプロジェクトを追加する」フォームを作成したいと思います。

最も簡単な方法は、プロジェクトフィールドがネストされたユーザーフォームを作成し、ユーザーフィールドを省略することであるように思われました。このように、フォームが送信されると、ユーザーが保存され、すべての新しいプロジェクトレコードが自動的に作成されます。

ただし、既存のプロジェクトをフォームに表示したくありません。(@ user.projects.buildから)作成されている新しいプロジェクトの空のフィールドのみ。渡すことができるパラメーターや、既存のプロジェクトレコードを省略するためにフォームで変更できるものはありますか?

ライアンベイトの複雑なフォームの例を使用しています。コードは正常に機能します。既存のプロジェクトがこのフォームに表示されないようにしたいだけです。

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

ruby-on-rails - Railsでマルチレベルのネストされたフォームを「ダーティ」としてマークする

Rails に 3 レベルの複数ネストされたフォームがあります。プロジェクトには多くのマイルストーンがあり、マイルストーンには多くのメモがあります。目標は、JavaScript を使用してページ内ですべてを編集可能にすることです。これにより、ページ内のプロジェクトに複数の新しいマイルストーンを追加したり、新規および既存のマイルストーンに新しいメモを追加したりできます。

新しいメモを既存のマイルストーンに追加する場合 (新しいマイルストーンは、メモを追加するときに正常に機能します) を除いて、すべてが期待どおりに機能します。実際にマイルストーンに属するフィールドを編集してマークを付けない限り、新しいメモは保存されません。 「汚れた」/編集されたフォーム。

追加された新しいメモが保存されるように、マイルストーンにフラグを立てる方法はありますか?

編集:申し訳ありませんが、非常に多くの部分があるため、すべてのコードを貼り付けるのは困難ですが、次のとおりです。

モデル

これを実現するために、Ryan Bates のコンボ ヘルパー/JS コードの控えめなバージョンの jQuery ベースを使用しています。

アプリケーション ヘルパー

非表示の div で関連付けのフォームをレンダリングし、次の JavaScript を使用してそれを見つけ、必要に応じて追加します。

JavaScript

私が考えることができる唯一の他の関連するコードは、NotesController の create メソッドになると思います。

@owner ivar は、次の before フィルターで作成されます。

問題は、既存のマイルストーンに新しいメモを追加する場合を除いて、これはすべて正常に機能しているように見えるということです。新しいメモを保存するには、マイルストーンを「タッチ」する必要があります。そうしないと、Rails は注意を払いません。

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

ruby-on-rails - ネストされたフォームの子は、親が変更された場合にのみ更新されます

このビデオ(10 秒) では、親モデルが変更された場合にのみ、ネストされたアトリビュートが更新されることがわかります。

rails 3.0.0.beta を使用し、完全なプロジェクトは github にあります。

モデルとフォームの概要:

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

ruby-on-rails - ネストされたパラメータにアクセスする方法

ネストされたパラメータを取得したいと思います。多くのアイテムがある注文があり、これらのアイテムにはそれぞれタイプがあります。コントローラのcreateメソッドからtype_idパラメータを取得したいと思います。

その理由は、ユーザーがビューに新しいitem_typesを作成できるようにするためです。それらがそれを行うとき、私はAJAX呼び出しを使用してそれらをdbに追加します。彼らがフォームを投稿するとき、私はitem_type_idパラメーターでitem_typeの名前を取得し、正しいitem_typeを見つけて、それにIDを設定したいと思います