問題タブ [fields-for]
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-3 - Rails 3 fields_for - ソート順が失われる
Ruby 1.9.2p0 で Rails 3.0.3 を使用しています。
私のprofiles_controller(編集機能)には、この呼び出しがあります
「pos」でソートされた正しい順序で @profile_items を取得します。_form.html.erb には次のものがあります
最初の 3 行は、@profile_items が正しい順序であることを示すテスト コードです。しかし、それらがレンダリングされると、ソートされた順序が失われます!
今、私は答えをたくさん探しましたが、これはよくある「罠」に陥るに違いないと思います。
助けてくれてありがとう...
ruby-on-rails - 1対1の関係を使用する場合、fields_forを介した出力はありません
ユーザーモデルとプロファイルモデルを単一のフォームに表示しようとすると、* fields_for *で出力を生成しようとして問題が発生しました。これらは、*has_one*と*belongs_to*の関係を使用します。
モデルクラスのトップからの抜粋は次のとおりです。
コントローラは非常にシンプルで標準的です。
そして、これが現在のビューからのスニペットです。
私はこのような他のことを試しました:
そして、手動でフィールドを追加すると、すべてが正常に機能します。
ドキュメントとガイドを読んだにもかかわらず、私はレールにかなり慣れておらず、これらの機能が内部でどのように機能するかを正確に理解していないことを言及する価値があります。また、私の検索では、fields_for 1対多の関係の例がたくさんあるので、おそらくこれを間違った方法で行っているのでしょうか?
すべてのヘルプ、アドバイス、およびさらなる読書は大歓迎です:-)
乾杯、
サム
ruby-on-rails - fields_forを使用した動的コンテンツ
has_many関係を使用するネストされたフォームがあります。フォームビューでは、フィールド入力にパーシャルを使用し、FormBuilderオブジェクトを渡します。
form.html.haml:
_string_fields.html.haml:
これは正常に機能します。ただし、AJAXに機能を追加して、RJSを使用して別のフィールドのセットを動的に追加したいのですが、RJSを介してパーシャルをレンダリングしようとすると、明らかにs
定義されていません(何を通過するかわかりません)。:locals
ハッシュ)。
で定義されたフィールドセットにフィールドを動的に適切に追加する方法はありますかfields_for
、またはヘルパーを使用せずにパーシャルを再実装する必要がありますか?
ruby-on-rails - fields_forパーツを含むフォームを送信する場合、新しいIDをfields_forモデルに割り当てるにはどうすればよいですか。
VehiculoとPolizaの2つのモデルを扱うフォームがあります。これが私が今それらを設定する方法です:
Vehiculoのcreateメソッドは次のようになります。
/ vehiculos / newのフォームには、polizaのフィールドを含む@fields_for部分があります。フォームを送信すると、すべてのフィールドが保存されますが、作成したばかりのIDがvehiculoからPolizasテーブルのvehiculo_idに割り当てられていません。これに関する多くの質問をオンラインで読んだ後、モデルの関係に基づいて「自動的に」保存する必要があるようです。これは本当ですか?もしそうなら、なぜそれが機能しないのですか?そうでない場合は、createメソッドに何を追加する必要があるので、これを解決しますか?
ありがとう!
更新:ここで提案されているように、出力としてjsonを使用してcreateメソッドを更新した後、次のようになります。
これが出力なので、少なくともフォームからフィールドを取得していますが、それらをpolizasテーブルに挿入していません。
ruby-on-rails - fields_for と間違った数の引数 (1 に対して 0) エラー
fields_for フォーム ビルダーの使用に苦労しているアマチュア Rails プログラマー。私の Rails アプリケーション (v=2.3.11) は、実験室のプロトコルと、それらのプロトコルで使用される動物 (体重など) を追跡します。
私の具体的な問題は、プロトコルには特定の数の動物しか持てないということですが、許可されているその数は種に固有のものです。
ネストされたフォーム ビヘイビアーは、すべての動物種のリストと、プロトコルで許可されている数の編集ボックスを表示する必要があります。
モデル: プロトコル、Allowed_Animal、種
種モデル
プロトコル モデル
許可_動物モデル
allowed_animal の表には次のものが含まれます。
ネストされたフォームは次のように機能します。
フォームには希望する方法が表示されますが、送信後にエラーが発生します。
コントローラーで次のことを試みます。
ここからどこへ行けばいいのかわからない。モデルにビルド メソッドが必要ですか? または、コントローラーで何か特別なことをする必要がありますか? 私の form_builder コードと、それが種を反復する方法に何か問題がありますか?
何か案は?
アプリケーション トレース:
パラメーター:
開発ログ
ruby-on-rails - fields_forを使用するときにフォームフィールドを複製する
has_many:through関係を処理するためにネストされたフォームを作成しようとしていますが、重複したフィールドがレンダリングされます。
モデル
会社
提供
サービス
コントローラ
設定/サービス
ビュー
形 -
_subs.html.erb
fields_forが重複を引き起こしていることは知っていますが、理由はわかりません。
誰かが明確にすることができますか?
ruby-on-rails - fields_for は配列を渡すことができません
オブジェクトのサブセットの fields_for を実行しようとしていて、いくつか苦労しています。詳細は次のとおりです。
したがって、そのコードは基本的に期待どおりに機能しますが、ビューでこれらの呼び出しを行うのは明らかにひどいことです。コードをクリーンアップするために、次のコントローラー コードを追加しました。
それから私がするとき:
その配列を取り込む代わりに、次のようなことを行います。
そして、そのクラブのすべてのシフト オブジェクトのフィールドを描画します... Arel オブジェクトを渡すとうまくいくように見えますが、配列ではうまくいかないようです。fields_for にオブジェクトのサブセットだけを描画させる最良の方法は何ですか?
この同様の質問を見てきましたが、 has_many :shifts_on_day(date) のような関連付けはできないと思います...
追加する編集:MySQLを使用してREEでRails 3.0.7を実行しています
ruby-on-rails - Rails 3:nested_form、collection_select、accepts_nested_attributes_forおよびfields_for
こことインターウェブには、nested_form、collection_select、accepts_nested_attributes_for、fields_forをうまく連携させるための良い質問と回答がたくさんありますが、それでも困惑しています。よろしければ、よろしくお願いします。
目的:新しいisbnレコードを生成します。isbnには多くの貢献者がいる可能性があります。必要に応じて、 ryanbnested_form gemを使用して、フォームに新しい寄稿者フィールドを動的に生成しています。これらのフィールドの1つは、Contributorのすべての名前レコードのcollection_selectドロップダウンを使用します。新しいレコードが作成されると、多くのコントリビューターIDを結合テーブル(contributors_isbns)に書き込む必要があります。
私はこれを少しは機能させていますが、isbnsテーブルの新しいレコードに単一の寄稿者IDを保存できるところまでです。結合テーブルにデータを書き込むことができないようです。
私は3つのモデルを持っています。寄稿者とIsbnsには多対多の関係があり、これはhas_many:throughを使用して行いました。isbnには多くの寄稿者を含めることができ、寄稿者には多くのisbnを含めることができます。それらはcontributors_isbnを介して参加します。
isbn.rb
contributor.rb
contributors_isbn.rb
isbnsコントローラーの場合:
(明らかに、どのビルド方法を使用するかを決めることはできません。)
isbns new.html.erbビューで:
_fields部分では、非常にプレーンなtext_fieldを持つバージョン:
そして、ここでは、どちらも機能しないより洗練されたバージョン:
このコードはここからの答えを使用します。どちらも、行に「Missingblock」エラーが発生しますnested_form_for @isbn
。
よろしくお願いします。
更新:この種の問題を調べるのに役立つ可能性のあるnested_formgemに関する情報を次に示します。そして、accepts_nested_attributes_forに関する[2009年だがまだ関連性のある投稿][4]があります。
更新2:まあ、ここにあります。私は、collection_selectやhas_many throughを使用せずに、単純なbelongs_to / has_manyの関連付けを使用して、2つの異なるモデルでこれの縮小版を調べてきました。親モデルはContractであり、子モデルはIstcです。ネストされたフォームからレコードを作成することすらできませんでした。ただし、スタックを調べて「警告。保護された属性を一括割り当てできません」というエラーメッセージをグーグルで検索した後:istcs_attributes
、行に追加したばかりで:attr_accessible
、レコードを追加できるようになりました。かなり重要なビットが欠落しており、RTFMの場合は、gemreadmeにあります。後で更新して、これが関連付けを通じてより複雑なhas_manyで機能するかどうかを確認します。
更新4:[ここ] [5]は、nilレコードのエラーメッセージを処理する方法に関するもう1つの便利な投稿です。
更新5:わずかな迂回-フォームに新しいフィールドのセットを動的に追加すると、子レコードの1つが作成されていました。Duh-子フォーム領域内に「追加」リンクがありました。これが前です:
そしてここに後があります:
更新6、回答後:
ああ、いや。collection_selectが機能していません。コントリビューターモデルの既存のレコードを使用せずに、新しいコントリビューターレコードを追加します。他の誰かもこの問題を抱えていました。何か案は?
ruby-on-rails - Mongoid配列フィールドを作成および更新するためのフォーム
配列フィールドを持つMongoidモデルのフォームを作成するのに苦労してきました。配列のエントリごとにフォームにテキストボックスを配置したいと思います。新しいレコードを作成する場合、デフォルトは1つの空のフィールド(およびページに新しいフィールドを動的に追加するためのJavaScript)になります。
fields_forを使用して解決策を探しましたが、文字列の配列である私が持っている場合ではなく、オブジェクト/モデルの配列がある場合を処理することを目的としているようです。
人と電話番号の例を使用します。
コントローラーについては、一般的なコントローラーを想定していますが、このnew
方法では、phone_number配列を1つの空白の文字列で初期化しました。
フォームコードは次のとおりです。
これはすべて正常に機能します。気に入らないことがいくつかあります。
- text_field_tag呼び出しのフィールドのハードコードされた名前。
- f.text_fieldの代わりにtext_field_tagを使用する
- どういうわけかこれの代わりにfields_forを使うべきだと感じている
誰かがこれを実装する方法についてもっと良い提案がありますか?それともこれは正しいと思いますか?
ruby-on-rails - Railsfields_for検証後の既存のレコードの重複フォーム
かなり奇妙なエラーに遭遇しました。既存のレコードで検証が失敗した場合を除いて、期待どおりに機能するネストされたフォームがあります。既存のレコードで検証が失敗すると、再レンダリングされた編集ビューに無効なレコードのフィールドが2回含まれます。フィールドの最初のセットは、オブジェクトが現在保存されている方法に従って入力されます。2番目のフィールドのセットには、送信されたばかりで無効であることが判明した情報が入力されます。
親(ShiftPeriod)に多くの子(Shifts)があり、各子が親に属している基本的なネストされたフォームがあります。ShiftPeriodは、allow_destroyをtrueに設定して、Shiftsのaccepts_nested_attributesを実行します。私はnested_formgemを使用していますが、通常のform_forも使用してみましたが同じ結果になりました
ShiftPeriodのフォーム(これを理解するまでシンプルに保つために、可能な限り削除しました):
シフトのフィールドを持つパーシャル:
Shiftオブジェクトの関連部分:
ShiftPeriodオブジェクトの関連部分:
コントローラ:as_many子(Shifts)および各子は親に属します。ShiftPeriodは、allow_destroyをtrueに設定して、Shiftsのaccepts_nested_attributesを実行します。私はnested_formgemを使用していますが、通常のform_forも使用してみましたが同じ結果になりました
コントローラー:
ShiftPeriodのフォーム(これを理解するまでシンプルに保つために、可能な限り削除しました):
シフトのフィールドを持つパーシャル:
Shiftオブジェクトの関連部分:
ShiftPeriodオブジェクトの関連部分:
コントローラー: