問題タブ [cocoon-gem]
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.
jquery - cocoon を使用すると、Rails のネストされたフォーム モデルの作成がサイレント モードで失敗する
Mongoid 2.4.12 と Rails 3.2.8 をcocoonで使用しています。ネストされたフォームはフロント エンドで問題なく動作しているように見えますが、ネストされたモデルとリレーションが保存されていません。
計画
仕事
プロジェクト ビュー
タスクの一部
ここに私のパラメータがあります:
ご覧のとおりaccepts_nested_attributes_for
、などに関するエラーは発生していません。
私のprojects#create
アクションでは、後でデバッグして、1 つのタスクの配列が正しく返される@project.save
ことを確認できます。@project.tasks
ただし、このタスクは作成/挿入/保存されることはなく、その後の関係はありません。私が見逃している可能性のあるものについての提案はありますか?
jquery - 繭のコールバックに渡される新しいオブジェクトはありません
私は繭を使用していて、次のコールバックがあります:
アラートは期待どおりに発生しますが、inserted_item
未定義です。e
完全に形成され、利用可能です。私は何が欠けていますか?
クラスセレクターへの置き換えも試みましたdocument
が、変更はありません。
ruby-on-rails - cocoon gem エラー: 未定義のメソッド `new_record?' nil:NilClass の場合
私は関係会社を構築しています:has_many Notes.
Comany#show リソースで、作成したばかりの会社に新しいメモを追加できるようにしたいと考えています。そのため、会社の足場の show.html.erb で
私は繭デモストレーションアプリとgithub mardownから段階的にフォローしましたが、例ではネストされた属性を_form.html.erbパーシャルに追加する方法のみを示しています。別の方法があるかどうかはわかりませんが、 Company#show アクションを実行しようとすると、次のエラーが表示されます。
未定義のメソッド「new_record?」nil:NilClass の場合
これは私のコードです:
show.html.erb:
_note_fields.html.erb:
会社.rb:
注.rb
company_controller.rb
ありがとう!デイブ
jquery - cocoon nested_form は edit.html.erb の既存のオブジェクトの下ではなく上にフィールドを追加します
私の new.html.erb は正常に動作しています。
しかし、私の edit.html.erb では、3 つの既存の部門があるとしましょう...
部門の追加リンク (別のフィールドを追加するため) をクリックするたびに、既存の部門の下ではなく上に移動し続けます。
ところで、私の協会は、部門には多くの部門があり、部門は部門に属していると言っています。
私のコントローラーでは:新しいメソッドと編集メソッドがあります
cocoon js ファイルが必要なので、デフォルトを使用し、他のものをオーバーライドしません。
cocoon.js
私の _form.html.erb で
そして、私がレンダリングしたのは _department_fields.html.erb です
edit.html.erb で新しく追加されたフィールドが既存のフィールドの上にあるのはなぜだろうか
ruby-on-rails - 繭で複雑なネストされたフォームを作成する
複雑なネストされたフォームを作成しましたが、アプリがそのフォームからの入力に基づいてレコードを正しく作成/編集する部分で問題が発生しています。
To-Doシナリオ:タスクが書かれた小さな紙の山から、フォームにタスクを1つずつ入力する必要があります(「送信」プレスごとに1つのタスク)。各タスクには、:project_number、:project_number_type、および:ownerが記述されています。私のアプリでは、これらの属性はモデルProjectNumber(最初の2つ)とOwner(最後のモデル)にあります。(プロジェクトには異なるproject_number_typesの複数の:project_numbersが含まれる場合があるため、別のProjectNumberモデルを作成する必要がありました。)
fields_for
私のフォームには、上記の各属性の正しいネストされたフィールドが表示されます。(accepts_nested_attributes_forなどは省略しました)。
2つの関連する(私が思う)問題:
私のフォームは新しいプロジェクトを作成することはありません!ネストされたフォームの作成に使用しているCocoongemを使用すると、ネストされたモデルごとにフォームパーシャルを作成できます。Projectパーシャルでは、Projectモデル自体に:number属性がなく、代わりにProjectNumbersモデルに関連付けられているため、ProjectNumbersパーシャルとその属性への参照があります。
edit
タスクの:project_number、:project_number_type、および:ownerがすべて既存のプロジェクトに関連付けられているものと一致する場合は、新しいタスクを使用して既存のプロジェクトにアプリを追加する必要があります。それ以外の場合は、create
そのタスクが属する新しいプロジェクトである必要があります。
私はここや他の場所でたくさんの小さなコードを読んでいますが、もう少し何かが必要です。おそらく、のような「何」と.first_or_initialize
、のような「どこ」も含まれています/models/task.rb
かtasks_controller.rb
?たぶん私は何かカスタムを作成する必要がありますか?本当にありがとう!
編集:これがフォームの部分です
====/views/tasks/_form.html.slim
====/views/tasks/_project_fields.html.slim
ruby-on-rails-3 - Rails 3 Cocoon link_to_add_association が部分的に 2 回レンダリングする
予想どおり、パーシャルが 1 回だけではなく 2 回レンダリングされます。何かご意見は?
これが私のPersonビューです
モデル (定数や検証などを削除):
私の _record_fields.html.erb パーシャルは次のようになります。
興味深い問題は、パーシャルが生成される場所を変更すると (link_to_add_association リンクのデフォルトの「前」ではなく「後」)、ボタンの後にパーシャルが生成されますが、重複は link_to_add_association リンクの前に生成されることです。
ここで報告された唯一の同様の問題は、本番環境でのキャッシュに関するものでした。これは開発中に発生しており、私のキャッシュは (デフォルトで) オフになっています。
何か不足していますか?誰でも助けることができますか?
編集: コクーン JavaScript を見ると、1 回のクリックに対してクリック イベントが 2 回呼び出されているようです ($('.add_fields').click() でテストすると、$('.add_fields').live('click' がトリガーされます) , function() {...} ) を 2 回入力しました.なぜこれが起こっているのか、私はまだ途方に暮れています.入力は非常に感謝しています.
編集#2:
コントローラ:
ruby-on-rails - ネストされた :has_many 繭
私はcocoon
宝石を使って、3 つのオブジェクトの深さのネストされたフォームを作成しています。オブジェクトの最初のセットは正常に機能し、新しい部分をレンダリングしてレコードに追加しましたが、ネストされた別のhas_many
関連オブジェクトを追加しようとすると、フォームはレンダリングされますが、オブジェクトは適切に保存されません。完全なコード「ビューとモデル」はこちら。
ruby-on-rails - Ruby on Rails で既存のネストされたオブジェクト/モーダルからネストされたオブジェクト/モーダルを作成する
プロジェクトで深くネストされたモデルを使用しています (simple_form と cocoon を使用)。ネストされたすべてのオブジェクトが新しい限り、すべてが正常に機能します。
私の問題は、既存の (ネストされた) オブジェクトからネストされたオブジェクトを作成したいということです。
これが私のモデルです
作業プロセスは次のようになります。
新しいアプリケーション --> 新しい送信者 --> 新しい子
1 つのフォームからすべてを作成できます。
さらに、次のプロセスも実装したいと考えています。
新しいアプリケーション -->既存の送信者 --> 新しい子
既存のオブジェクトは、ドロップダウン リスト ボックスで選択する必要があります。
ビューの(簡略化された、動作する)コードは次のとおりです。
new.html.erb
_submitter_fields.html.erb
_child.html.erb
_child_fields.html.erb
ここで、既存のすべての送信者が取り込まれるドロップダウン リストを追加したいと考えています。例えば:
ここから問題が始まります。選択したサブミッターに新しい子を追加するためのフォームを作成するには、このオブジェクトをフォーム ビルダーに割り当てる必要があります。これを行う方法がわかりません。
誰かがこれを実装する方法を教えてもらえますか? それとも、このシナリオは単に不可能ですか?
前もって感謝します!
キリスト教徒
ruby-on-rails - cocoon を使用してネストされた形式で子を自動的に追加する
同じフォームで追加/削除する予定のこれらのモデルがあるとします。
私はすでに Cocoon で「質問を追加」リンクと「回答を追加」リンクを使用しており、クリックするとそれに応じて新しいアイテムが追加されます。
私が知りたいのは、リンクがクリックされたときに Cocoon に「子」のネストされたアイテムを自動的に追加させることが可能かどうかです。たとえば(上記のモデルの例を使用)、ユーザーが「質問の追加」リンクをクリックすると、「新しい質問」レコードが作成された後に「新しい回答」レコードを自動的に作成したいと思います。
このリンク ( Rails - Dynamically build deep nested objects (Cocoon / nested_form) ) を見つけましたが、完全には理解できませんでした。
これはCocoonで可能ですか?
ruby-on-rails - Twitter Bootstrap と Cocoon を使用したタブ リンクの一意のネストされた子識別子
パーシャル内に Twitter Bootstrap タブを含む Ruby on Rails アプリケーションがあり、そのパーシャルの複数のインスタンスをユーザーが Simple Form と Cocoon を使用して追加できます。
タブ リンクが適切に機能するためには、パーシャルの新しい子ごとにタブに一意の名前を付ける必要があります (特定のタブをクリックすると、タブ内の同じ名前のタブのコンテンツではなく、独自の一意のコンテンツがアクティブになります)。同じページに表示される前の子パーシャル)。
https://github.com/nathanvda/cocoon/pull/100で、この目的を達成するために Cocoon にコードが追加されていることがわかりました。
その議論では、新しい機能が Cocoon Simple Form Demo プロジェクトで試されたという指摘があります。しかし、新しい機能を試す過程で加えられた変更は、そこにはコミットされていませんでした (少なくとも私が知る限り)。
github のコミットを見ると、'insertionNode.trigger' 呼び出しのパラメーターに '[contentNode]' を追加することで、Cocoon JavaScript コードでその追加が行われたようです ( https://github.com/woto/cocoon/コミット/cb206d501e4749a05e0c1d868911da159c8200c1 ):
私はこのことについてあまり洗練されていません。
では、ネストされた子の新しいインスタンスごとに一意の識別子を実装/取得するにはどうすればよいですか?
どんな助けや指示も大歓迎です。
参照用の私のアプリケーションのコードは次のとおりです。
-# /app/controllers/parent_records_controller.rb
-#/app/views/parent_records/_form.html.haml
-#/app/views/parent_records/form_partials/_item --- --- タブ HREF 名は、一意の識別子が必要な場所です --- ---
-#/app/views/parent_records/form_partials/_picture
編集/フォローオン質問:
以下のネイサンの回答は、一意の識別子を追加するために機能しましたが、一意の識別子を追加すると、Bootstrap のタブ機能が壊れました。Bootstrap javascript はおそらく、ドキュメントが最初に読み込まれたときにタブとリンクの間の対応を評価しているだけだという私の印象を考えると、これはある程度理にかなっているように思えます。
Bootstrap JavaScript を再初期化して新しい ID とリンクを見つける方法を教えてもらえますか??
EDIT2
それはdivの.well.span
分離.nested-fields
であり、Bootstrapが新しい名前とタブID.tabbable
を初期化できなかったことがわかりました(私は思います)。href
クレイジーな旅ですが、最終的には満足です。