我首先說我主要是前端設計人員/開發人員,而且對MVC沒有經驗。使用TowerJS創建登錄表單
我想用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: /\[email protected]\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"
那麼表單不會渲染,因爲它看起來像塔,因爲它傳遞@user
期待所有User
領域的形式。這真正歸結爲我對模型渲染的高層缺乏瞭解。在我心中有兩個選項進行渲染這個登錄表單是:
- 使用「形式」的全部局部和隱藏/忽略通過CSS /後端-JS無關的領域分別或...
- 創建一種僅包含我關心的登錄字段(電子郵件,密碼)的新模型,然後在該模型上使用
formFor
。這對我來說似乎很愚蠢,因爲我正在處理用戶,所以我覺得直覺上我應該使用User
模型。
也許答案在於創建一個Session
模型,但我不確定所有這些部件如何在TowerJS中一起工作。要清楚,問題是:什麼是正確的使用TowerJS呈現登錄表單的方式?
是的,我知道這是有效的,因爲你正在使用用戶控制器的「新」動作,但我將如何添加一個名爲登錄和路由它的新動作?我正在考慮路由:'@match「/ login」,以:「users#login」'和用戶控制器: 'login: - > resource = new App.User @render「login」 但這不起作用。 –
是的,我是個白癡。我甚至不知道我以爲你在問什麼。 –