2012-08-22 50 views
-1

我的問題屬於Rails命名約定難題。我的應用程序已經註冊,登錄,註銷功能。Rails命名約定問題

對於註冊頁面,我使用了form_for(@user)幫手。

對於登錄頁面,我使用了form_for(:session, url: sessions_path)。但是在我的routes.rb文件中,我已經包含了resources :sessions而不是如登錄頁面中form_for helper參數中提到的單數形式。

,如果有人能:

1)解決這種特殊的form_for問題

2.) More importantly point me in the direction where I can learn/read about Rails naming conventions, I would be highly indebted. 

回答

1
  1. 我敢打賭,@user已與User.new初始化 - 這是一個新的用戶。當你註冊時你想創建一個新用戶,這樣你就可以將form_for(@user)翻譯爲「新用戶的表單」。請注意,在這種情況下,您提供了form_for一個ActiveRecord用戶實例,這是它的使用方式。
  2. 當你給form_for一個符號而不是一個ActiveRecord模型的實例時,它使用這個符號來嵌套表單中的輸入。例如,如果您將<%= f.text :name %>放在您的表單中,它將生成<input name="session[name]" type="text">。此外,當現有用戶登錄時,您不想創建新用戶(如第1步中所述),您只需要爲現有用戶創建新會話,因此發佈到sessions_path看起來非常直觀。
  3. 您可以在終端中鍵入命令rake routes,並獲取爲您的應用程序設置的所有命名路由,這將使您非常瞭解軌道如何將資源命令轉換爲命名路由。

如需進一步信息閱讀以下內容:

Rails Routing Guide

form_for ApiDock documentation

+0

所以你基本上是說,存在之間沒有相關性:在的form_for助手和會話符號的資源:會議?我可以調用任何參數,即form_for(:foobar,sessions_path)? –

+1

這正是我所說的 –