我試圖通過遵循 邁克爾哈特的Rubyonrails書建立用戶註冊表單。 Chapter 7:Singup將@user變量添加到新動作的原因(def new @user = User.new end)
但是我根本無法將我的頭包裹在這段小小的代碼中。
def new
@user = User.new
end
我想知道上面的代碼的目的是什麼,它是如何工作的?
如果我排除上面的代碼(@用戶= User.new)故意,它會拋出錯誤消息說:
raised: First argument in form cannot contain nil or be empty
如果在形式上第一個參數不能包含零或爲空,爲什麼宣佈@user = User.new獲得通過,因爲它將nil賦值給用戶對象。我對rails的天真理解在這裏可能是錯誤的。
這裏是全碼
控制器/ user_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
def new
@user = User.new
end
def create
@user = User.new(user_params) # Not the final implementation!
if @user.save
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
end
private
def user_params
params.require(:user).permit(:name, :email, :password,
:password_confirmation)
end
end
視圖/用戶/ new.html.erb
<%= form_for(@user)do | f | %> <%=渲染的共享/ error_messages「%>
<%= f.label :name %> <%= f.text_field :name %> <%= f.label :email %> <%= f.text_field :email %> <%= f.label :password %> <%= f.password_field :password %> <%= f.label :password_confirmation, "Confirmation" %> <%= f.password_field :password_confirmation %> <%= f.submit "Create my account", class: "btn btn-large btn-primary" %> <% end %> </div> </div>
之前提出這個問題,可敬的計算器社區我尋找的答案在下面的鏈接: -
http://railscasts.com/episodes/250-authentication-from-scratch
First argument in form cannot contain nil or be empty Hartl's Rails 4 Tutorial
謝謝你的時間。
爲了更深入的理解,閱讀[form helpers](http://guides.rubyonrails.org/form_helpers.html)推薦sameera207是必須的。 – 2014-09-22 09:22:05