質問

多くのアプリと同様に、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アクションごとに共通のベーステンプレートを定義し、いくつかのパーシャルに分割することもできます。提供されたヘルパーのおかげで、現在のモデルの列定義を見ることで、フォームとテーブルを一般的に定義できます。特定のモデルのビューでは、カスタマイズが必要なパーシャルまたはビューのみを調整できます。

上記のサイトで見つかったドキュメントを見て、乾いたままにしてください!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top