RailsアプリのCRUD部分を乾燥させる方法は?
-
20-08-2019 - |
質問
多くのアプリと同様に、90%が通常のCRUD項目であり、10%が<!> quot; juice <!> quot;であるアプリを作成しています。
この90%については、できる限りDRY原則に固執しようとしていました。コントローラーが動作している限り、resource_controllerが実際に機能することがわかりました。その領域のすべてのコントローラーを削除して、汎用のコントローラーに置き換えることができました。
今、ビューで同じことをする方法を知りたいです。このアプリでは、全体的なapplication.html.erbレイアウトがあり、すべてのCRUDビューに共通の別のレイアウトレイヤーが必要です。最後に<!> quot; core <!> quot;パート:
-
index.html.erbで、すべてのフィールドとラベルを指定した単純なテーブルを生成する必要があります。
-
新規および編集用、汎用フォームエディション、ラベルおよびフィールドを示します(必要に応じてカスタムフィールドを提供する可能性があります)。
-
ショーが必要かどうかはわかりませんが、ショーを行うと、newおよびeditと同じになります。
どのプラグインとツール(または記事と一般的なポインタ)でもそれを実現するのに役立ちますか?
ありがとう、 フェリペ。
解決
コントローラーをDRYし、ビューをDRYしたい場合、1つのアプローチは、インスタンス変数に変更される可能性のあるUIコンテンツをrender :action => *actionname*
に保存することです(ビューで使用できるように) edit 、 new 、 list 、または show の同じビューを再利用できます。たとえば、 Foo に関連するものを編集している場合、タイトルはEditing <%= @type %>
である必要があります。フォームヘルパーも同様です。 Foo は bar に変更できます。したがって、異なるエンティティに対して同じビューを再利用しています(またはコントローラーを言う必要があります)。 redirect_to
とは異なり、render :action
はビューをレンダリングするだけで、レンダリングしようとしているアクションのコントローラーアクションを呼び出しません。
一つ確かなことは、何かを乾かすには、標準化するか慣習に従う必要があるということです。例、この場合のビューの構造。
他のヒント
script/generate scaffold test name:string description:text valid:boolean
を実行して、生成されるビューを見ることができます(そしてscript/destroy scaffold test
を実行してファイルを削除します)。これにより、4つのデフォルトのRailsビューを記述する標準的な方法がわかります。
<!> quot; Agile Web Development with Rails <!> quot;の関連する章を読むこともお勧めします。および<!> quot; The Rails Way <!> quot;。
クリーンアップする必要がある既存のビューがある場合、Railscastsのこのエピソードは素晴らしいです:ビューのクリーンアップ
Dary
要件に非常に近い新しい宝石が出ているように見えます:
http://github.com/codez/dry_crud
共通のスーパークラス(CrudController)に基づいて、さまざまなモデルコントローラーのCRUD機能を継承し、そこで特別なものを適応させることができます。これは、おそらくあなたがすでにやったことです。
dry_crudの新しい点は、ビューとパーシャルも継承できることです。 CRUDアクションごとに共通のベーステンプレートを定義し、いくつかのパーシャルに分割することもできます。提供されたヘルパーのおかげで、現在のモデルの列定義を見ることで、フォームとテーブルを一般的に定義できます。特定のモデルのビューでは、カスタマイズが必要なパーシャルまたはビューのみを調整できます。
上記のサイトで見つかったドキュメントを見て、乾いたままにしてください!