問題タブ [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.
ruby-on-rails - 画像アップロード付きのマルチモデルフォーム
多くの回答がある投票オブジェクトを作成しようとしています。各回答には画像を添付できます。質問を入力し、可変数の回答を追加できるフォームを作成するにはどうすればよいですか(それぞれに画像が添付されています)。また、アップロードされた画像のプレビューを許可したい場合もあります。
これまでの私の考えは、追加された質問ごとにプレビューハンドラーに自動アップロードされる各画像のサブフォームを用意することです。
私の他のアプローチは、セッションで質問オブジェクトを作成し、それに回答オブジェクトを追加して、それらをすべて同時に保存することでした。しかし、Railsでそれを実現する方法はよくわかりません。画像のアップロードにペーパークリップを使用しています。
私は少しレール初心者なので、アドバイスをいただければ幸いです。
ruby-on-rails - 3 レベルのネストされたフォームを数えるより良い方法はありますか
次のようなネストされたフォームがあります。
ここで、house.id = 1 の部屋とテレビの合計数を知りたいと思います。
私が与えたhouses_controllerで
そして、次のように各家の部屋数を取得するのは非常に簡単です
私の質問は、テレビの数を取得する方法ですか? 私は今これを使っています
動作しますが、これが良いかどうかはわかりません。取得する良い方法はありますか?
ruby-on-rails - Rails ネストされたフォーム
text_fields でフォームを作成したい
- 題名
- コンテンツ
- タグ
私は投稿(TITLE、CONTENT)とタグ(TAGS)モデルを持っています。TAGS は単一のテキスト フィールドです。TAGS をタグ モデルに保存するにはどうすればよいですか。TAGS フィールドに「バナナ、ジュース、新しいタグ」と書いたとします。これを配列に解析して、タグ モデルに保存するにはどうすればよいでしょうか。
どうも!
ruby-on-rails - rails ネストされたオブジェクトフォームと名前空間化されたコントローラー
私はこのようなネストされたオブジェクトを持っています:
ネストされたページオブジェクトのフィールドを使用して、作品を作成/編集するためのフォームがあります。この投稿に従ってセットアップを行ったので、開始時にフォームが新しいページを作成するようにヘルパーを使用しています。
次に、私の形式の部分的に私は持っています:
ページのフィールドを表示しますが、送信されると、works コントローラーで create アクションを探します。作成アクションは管理者の作業コントローラー (名前空間) にあるため、壊れます。
名前空間付きのオブジェクトで試してみましたが、このようにすると、ページについて認識しません:
入れ子になったオブジェクト フォームで名前空間を使用して、pages メソッドを持ち、名前空間化された admin/works コントローラーに投稿するにはどうすればよいですか?
ruby-on-rails - 高度な Rails レシピ本から複数のモデルの例を変更するのに助けが必要
私は学習目的で自分で使用する単純なレールアプリを開発しており、2 つのモデルを 1 つの形式で処理しようとしています。Advanced Rails Recipes の第 13 章の例に従い、自分の目的のためにいくつかの簡単な変更を加えて動作させることができました。
私が持っている 2 つのモデルは Invoice と InvoicePhoneNumber です。各 Invoice には、複数の InvoicePhoneNumbers を含めることができます。私がやりたいことは、各請求書に少なくとも 1 つの電話番号が関連付けられていることを確認することです。本の例では、各電話番号 (本のタスク) の横に「削除」リンクを配置しています。一番上の電話番号の横に削除リンクがないことを確認したいのですが、これを行う方法がわかりません。請求書の電話番号リストの各行を生成する部分的なテンプレートは次のとおりです。
ここで、最初の電話番号がいつ生成されるかを検出できれば、link_to_function に条件を設定して実行しないようにすることができます。これは私の問題を半分解決し、満足のいくものですが、実際に、たとえば最初の電話番号を削除して 2 番目の電話番号を保持したい場合は、手動でシャッフルする必要があります。
これを行う理想的な方法は、おそらくJavaScriptを使用したブラウザですが、これにアプローチする方法がわかりません。「削除」リンクが 1 つしかない場合は非表示にし、複数ある場合はすべての「削除」リンクを表示する必要があります。「電話番号の追加」リンクで使用されている .insert_html メソッドの機能は、これには適切ではないようです。
私はこれについて段階的なハウツーを求めているわけではありません (実際、入手したくない - これを理解したいのです) が、この問題をどこから始めるべきかについて誰か提案がありますか?
ruby-on-rails - 複数のモデルを含む Rails チェックアウト フォーム
Rails を使用したアジャイル Web 開発 (バージョン 3) のものに基づいて、ショッピング カートを作成しています。「アイテム」が「カート」に追加される場所を設定してから、チェックアウトプロセスを開始すると、「注文」オブジェクトに「line_items」として追加されます。「line_items」は、任意の数量の 1 つの「アイテム」を表します。ここまでは、本の例から逸脱していません。ただし、ここで複雑になります。私の店のすべての「アイテム」はテキストでカスタマイズ可能であり、「注文」の「line_items」でカスタムテキストを保存できる必要があります。
前述のように、「line_items」には任意の数量の「item」が保持されますが、顧客はすべてのアイテムをカスタマイズできる必要があるため、各「line_item」は個々の「item」ごとに異なるカスタマイズを保持する必要があります。そのため、「line_items」テーブルにカスタマイズ用の列を 1 つだけにすることはできません。私がそれを整理することにした方法は、新しいモデル/テーブル「line_item_attributes」を作成することでした。「line_item」内の個々の「item」ごとに、新しい「line_item_attributes」があります。
私はまだ Rails を使い始めたばかりで、これを機能させるのに苦労しています。これを「正しい方法」で行っているとは確信していません。私が遭遇したのは、一種の鶏と卵の問題です。「注文」を作成するとき、カートから「アイテム」を「line_items」として追加します。彼らが注文している製品をカスタマイズするために、カスタマイズ フォームが機能するように、各「line_item」に「line_item_attributes」も追加する必要があります。
わからないことは次のとおりです。顧客がフォームを送信した後、空白の「line_item_attributes」に「記入」する方法がわかりません。フォームに「ダミー」の line_item_attributes を作成できず、送信時に、送信されたデータから新しいもの (実際に保存されるもの) を作成します。これは、それらが属する「line_items」に関連付ける必要があるためです。「@order.save」を呼び出したときにRailsがそれらを埋めてくれることを望んでいましたが、そうではありません。これが理解するのが難しくないことを願っています。
以下に関連するコードを含めました。
buy.rb (コントローラー)
order.rb (モデル)
line_item.rb (モデル)
line_item_attributes.rb (モデル)
助けてくれてありがとう!
ruby-on-rails - ネストされた Rails フォームと、label_tag、checkbox_tag およびその他の form_tag 関数の使用
Ruby on Rails の通常のフォームでは、form_for を使用してモデルを構築する場合、API ドキュメントに記載されているように、form_for は排他的スコープを作成せず、form_for フォーム内で form_tag 関数を使用することができます。
例えば:
ただし、ネストされたフォームでは、複数のネストされたモデルが一度に作成された場合に重複しないように、指定されたネストされたモデルに関連付けられるように Rails によって自動的に生成される名前がラベルとフィールドに付けられます。form_tag 関数を引き続き使用することは可能ですか?
私はこのようなことをしたいと思います:
ただし、複数の子がいる場合に check_box_tag が一意の値であることを確認するために、child_form のインデックスにアクセスする方法がわかりません。
私がやろうとしていることは可能ですか?
ruby-on-rails - has_many:throughを使用してネストされたフォームをレールします。結合モデルの属性を編集する方法は?
accepts_nested_attributes_forを使用する場合、結合モデルの属性をどのように編集しますか?
私は3つのモデルを持っています:リンカーが参加したトピックと記事
したがって、トピックコントローラの「新しい」アクションで記事を作成すると...
...そしてtopics/new.html.erbでネストされたフォームを作成します...
...Railsは自動的にリンカーを作成します。これはすばらしいことです。 さて、私の質問です。私のリンカーモデルには、「新しいトピック」フォームを介して変更できるようにしたい属性もあります。ただし、Railsが自動的に作成するリンカには、topic_idとarticle_idを除くすべての属性にnil値があります。これらの他のリンカー属性のフィールドを「新しいトピック」フォームに入れて、それらがゼロにならないようにするにはどうすればよいですか?
ruby-on-rails - Rails-オブジェクトのタイプはそれ自身のモデルにあるべきですか?
連絡先があり、has_many:phonesに連絡します。phoneテーブルにはphones_descという名前の列があり、ユーザーが保存した電話番号のタイプを含めます。
私の質問/ベストプラクティス
手動で提供されたオプション(「モバイル」、「職場」、「自宅」など)を選択して提供する必要があります。
-また-
...phones_typesという名前の新しいモデルを作成します。ここで、必要な値を追加して、それぞれに一意のIDを作成できます。次に、phone_descをphone_type_idに変更し、phones has_many:phone_typesを追加し、phone_typesテーブルに名前列を指定した後、次の操作を実行できます。
サイドノート
私は現在、最初のオプション(別のモデルではない)でそれを行っていますが、親オブジェクトを編集するときに値を選択するのに問題があります。つまり、電話番号を編集するときに、選択オプションで保存された値が選択されていません。
常に最初のオプションが選択されているため、ユーザーが気付かないうちに誤ってphone_descを変更する可能性があります。
最初のオプションが実際に行くためのより良い方法である場合、選択を介して電話の説明を編集するときにオブジェクトの値を選択された値にする方法について何か洞察がありますか?
jquery - file_field 要素を使用した Rails ネストされたフォーム
Railscast 197 にあるコードを使用して、jQuery を使用してネストされたフォームを作成しています。私が直面している課題は、ネストされたモデルが file_field 要素を使用していることです。このため、編集ビューを見ると、空の file_field 要素のリストが表示されます。ユーザーが編集ビューを表示しているときに別のもの (無効化された text_field など) を表示し、新しいビューを表示しているときは file_field を表示するように Rails に指示する方法はありますか?
これは私が使用しているパーシャルです:
そして、これはそれを追加する jQuery です (パーシャルを表示するときの効果を追加するために、Railscast からわずかに変更されています)。
しかし、私の _form パーシャル内には次のものがあります。
これがパーシャルを追加するものです。ここのどこかに、オブジェクトが既に作成されているかどうかにかかわらず、レールに別のパーシャルをレンダリングするように指示する何らかの条件が必要であると推測しています..誰もがどのようにアイデアを持っていますか私はこれを達成できますか?