私は主にフロントエンドのデザイナー/開発者であり、MVC の経験はほとんどありません。
TowerJS を使用してログインフォームを作成したいと考えています。私のアプリのほとんどは、ドキュメントからそのまま使用できます。「ユーザー」と呼ばれる単一のモデルがあります。
class App.User extends Tower.Model
@field "email", type: "String"
@field "userName", type: "String"
@field "password", type: "String"
@field "active", type: "Boolean", default: -> true
@validates "userName", presence: true
@validates "email", presence: true, format: /\w+@\w+.com/
@validates "password", presence: true
@timestamps()
「新しい」ユーザー ビューには、「フォーム」パーシャルを含めます。
formFor @user, (f) ->
f.fieldset (fields) ->
fields.field "email", as: "string"
fields.field "userName", as: "string"
fields.field "password", as: "string"
fields.field "active", as: "string"
f.fieldset (fields) ->
fields.submit "Submit"
ログイン フォームに "form" パーシャルを使用すると、不要なフィールド ("active" など) が含まれます。「ログイン」と呼ばれる新しいパーシャルを使用する場合:
formFor @user, (f) ->
f.fieldset (fields) ->
fields.field "email", as: "string"
fields.field "password", as: "string"
f.fieldset (fields) ->
fields.submit "Submit"
User
フォームが渡されて以来、Tower はフォーム内のすべてのフィールドを予期していたように見えるため、フォームはレンダリングされません@user
。これは、モデルがどのようにレンダリングされるかについて、私が高いレベルで理解していないことが原因です。このログイン フォームをレンダリングするための 2 つのオプションは次のとおりです。
- 「フォーム」パーシャル全体を使用し、css/back-end-js を介して無関係なフィールドを非表示/無視するか、または...
- ログインに必要なフィールド (電子メール、パスワード) のみを含むある種の新しいモデルを作成し、
formFor
代わりにそのモデルで使用します。私はユーザーを扱っているので、これはばかげているように思えるので、User
モデルを使用する必要があると直感的に感じています。
おそらくその答えはSession
モデルの作成にありますが、これらすべてのパーツが TowerJS でどのように連携するかはわかりません。明確にするために、質問は次のとおりです。TowerJS を使用してログインフォームをレンダリングする適切な方法は何ですか?