-1

我的问题与 Rails 命名约定难题有关。我的应用程序具有注册、登录、退出功能。

对于注册页面,我使用了form_for(@user)helper。

对于登录页面,我使用了form_for(:session, url: sessions_path). 但是在我的 routes.rb 文件中,我resources :sessions在登录页面中包含了 form_for 助手参数中提到的单数而不是单数。

如果有人可以:

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.
4

1 回答 1

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 如何将资源命令转换为命名路由。

欲了解更多信息,请阅读以下内容:

Rails 路由指南

form_for ApiDock 文档

于 2012-08-22T07:39:59.930 回答