2012-08-22 52 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

这正是我所说的 –