首先我要说的是,我主要是一名前端设计师/开发人员,对 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"
如果我为我的登录表单使用“表单”部分,它将包含我不想要的字段(例如“活动”)。如果我使用一个名为“登录”的新部分:
formFor @user, (f) ->
f.fieldset (fields) ->
fields.field "email", as: "string"
fields.field "password", as: "string"
f.fieldset (fields) ->
fields.submit "Submit"
然后表单不会呈现,因为似乎 Tower 期待User
表单中的所有字段,因为它被传递了@user
。这真的归结为我对如何渲染模型缺乏高层次的理解。我认为呈现此登录表单的两个选项是:
- 完全使用“表单”部分,并分别通过 css/back-end-js 隐藏/忽略不相关的字段或...
- 创建某种只包含我关心的登录字段(电子邮件、密码)的新模型,然后
formFor
在该模型上使用。这对我来说似乎很愚蠢,因为我正在处理用户,所以我直觉上觉得我应该使用该User
模型。
也许答案在于创建一个Session
模型,但我不确定所有这些部分如何在 TowerJS 中协同工作。需要明确的是,问题是:使用 TowerJS 呈现登录表单的正确方法是什么?