在
script/generate authenticated user sessions
users_controller.rb
是使用
def new
@user = User.new
end
并且视图有这一行:
@user.password = @user.password_confirmation = nil
就是这样。这真的需要吗?我的意思是表单将POST到/users
,这是通过RESTful路由,转到UsersController#create
,因此实际创建的@user
从未使用过。它真的需要,为什么?感谢。
更新: @user
从未在任何其他位置再次使用...另外,我尝试删除这两行
@user = User.new
和
@user.password = @user.password_confirmation = nil
我仍然可以使用该表单来创建新用户......
答案 0 :(得分:1)
需要在视图上呈现正确的表单。表单可以说它是否只是非保存对象,就像这里一样,因此表单将创建发布请求。如果它是在DB中找到的用户,那么它将自动创建PUT请求以进行更新。
<%= form_for @user do |f| %>
<%#= something %>
<% end %>
如果您在控制器User.new或User.find(id)
中执行操作会有所不同答案 1 :(得分:1)
在视图中它是有道理的。假设用户帐户创建失败 - 您将使用其他(非新)new
对象重新呈现@user
视图。我可能会在操作中重置密码和password_confirmation。