Rails命名约定问题

时间:2012-08-22 07:30:03

标签: ruby-on-rails ruby-on-rails-3 forms naming-conventions

我的问题与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 个答案:

答案 0 :(得分:1)

  1. 我打赌@user已经使用User.new进行了初始化 - 这是一个新用户。注册时,您希望创建一个新用户,以便将form_for(@user)翻译为“新用户的表单”。请注意,在这种情况下,您提供form_for ActiveRecord用户实例,这就是它的使用方式。
  2. 当您为form_for而不是ActiveRecord模型的实例提供form_时,它使用该符号将输入嵌套在表单内。例如,如果您在表单中添加<%= f.text :name %>,则会生成<input name="session[name]" type="text">。此外,当现有用户登录时您不想创建新用户(如步骤1中所示),您只想为现有用户创建新会话,因此发布到sessions_path看起来非常直观。
  3. 您可以在终端中键入命令rake routes并获取为您的应用程序设置的所有命名路由,这将使您非常了解rails如何将resources命令转换为命名路由。
  4. 有关详细信息,请阅读以下内容:

    Rails Routing Guide

    form_for ApiDock documentation