私は同じ機能をfull_name
(user_view.ex
,とconnection_view.ex
)の3つのビューに持っています。どのように私はそれがDRYであることをリファクタリングすることができますか?私はfull_name
機能をプロジェクトの1か所にまとめたいと思っています。ビュー機能をDRY
1
A
答えて
1
テンプレートは単なる関数なので、いくつかのヘルパーモジュールで共通の関数を定義し、それを必要な場所にあるView
にインポートすることができます。
defmodule MyApp.UserHelpers do
def full_name(...)
# ...
end
end
defmodule MyApp.UserView do
use MyApp.Web, :view
import MyApp.UserHelpers
# ...
end
1
周囲にはいくつかの方法があります。一番簡単な方法は、別のモジュールにその関数を置き、必要な場所にインポートするだけですが、それが混乱することが想像されるので、まずアプリケーションを設計して、適切な方法でそれを調べてください。あなたはあなた自身のフォルダと構造要素をあなたのアプリケーションに作成するのを怖がってはいけません。
私は他の回答で述べたように、あなただけので、それはそのようなものになるだろう(名前が適切であるかどうかわからない)デコレータのように、独立した構造要素を作成することができます。
defmodule MyApp.UserDecorator do
def full_name(%MyApp.User{first_name: first_name, last_name: last_name} = user) do
first_name <> " " <> last_name
end
end
その後、アプリのどこにでも使用できます。
関連する問題
- 1. Django DRYクラスベースのビュー
- 2. Djangoビューを保持するDRY
- 3. DRY反応複数の類似の機能をコード
- 4. DRYを同様の機能のセットに適用する
- 5. Rails:ロールベースのユーザーのためのDRYビュー
- 6. Flaskビュー機能のビューの意味は?
- 7. ビューの実行機能
- 8. ブートストラップボタンでビュー機能をトリガーする
- 9. login_requiredデコレータでビューのdjangoがDRYを尊重している
- 10. 繰り返しビュー機能を複数のビューに含める?
- 11. ビュー機能のリクエストパラメータの使用
- 12. カスタム入力ビューのキーボード機能
- 13. MVCビューのjavascriptが機能しない
- 14. ビュー内のコントローラの機能へのアクセス
- 15. プル・トゥ・リフレッシュ・ビュー機能の実装
- 16. ジャンゴ:私のビュー機能でTemplateDoesNotExist(rest_framework/api.html)
- 17. ASP.NETビューが機能しない
- 18. 変形ビューの機能ですか?
- 19. パーシャルビューのMVC Ajax.BeginForm親ビューの更新機能親ビュー
- 20. ビュー "CONTAINS"がビューの基準で機能していない
- 21. iOSのリンクデータ検出機能付き編集可能なuitextビュー
- 22. ModelFormsとDRYプレースホルダー
- 23. ジキルDRYテンプレート
- 24. DRY up ng-model
- 25. DRY Railsマスターテンプレート?
- 26. ReactネイティブDRY Javascript
- 27. コントローラのDRY
- 28. JQueryスクロールDRY
- 29. ASP.NET MVC DRY
- 30. DRY XMLは
'import MyApp.UserHelpers'は' web/web.ex'に置くことができるので、インポートを繰り返す必要はありません。 – tkowal