簡體   English   中英

Rails 3中RESTful表單的問題

[英]problem with RESTful forms in Rails 3

好的,基本上,我的模型有一個正常形式:

= form_for @operator do |f|
blah blah blah

在我的操作員控制器中,我有以下內容:

def new
  @operator = Operator.new
  @operator.build_user

  respond_to do |format|
    format.html {}
  end
end

def create
  @user = User.create(params[:operator].delete(:user))
  @user.update_attributes(:login => @user.email)
  @operator = Operator.new(params[:operator].merge(:user => @user))

  respond_to do |format|
    if @operator.save
      format.html {redirect_to new_operator_aircraft_path(@operator)}
    else
      format.html { render :action => "new", :error => @operator.errors }
    end
  end
end

非常基本的東西。 我的模型中有一些validates_presence_of東西,所以當我提交表單時,很自然地,它應該告訴我我有錯誤(並保留我填寫的字段)

到目前為止正確嗎? 是的 問題是,似乎我正在發布到/ operators,這就是渲染結果。 我似乎已經忘記了Rails2.3 +中會發生什么,但是我不應該再次重定向到/ operators / new嗎? 還是一直以來的預期行為?

我想這就是您要問的:

在提交帶有錯誤的表單之后,為什么URL讀為“ / operators”而不是“ / operators / new”。

由於資源豐富的路由,當通過POST向“ / operators”提交表單時,將在OperatorsController上調用create動作。 如果在保存運算符時遇到錯誤,則已指示控制器在同一請求中呈現新動作。

render :action => "new", :error => @operator.errors

這意味着沒有發生重定向,因此URL仍為“ / operators”。

如果發生重定向,您將丟失當前請求中@operator對象的所有狀態信息,包括遇到的錯誤以及剛提交的表單值。

換句話說,按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM