2015-02-23 94 views
1

作爲登錄的一部分,如果User未保存,我將重定向回原始控制器和操作。但原始控制器未收到對象resourceRedirect_to不發送對象

registrations_controller.rb

redirect_to m_signup_after_job_post_path(resource, job: params[:job_id]) 

pages_controller.rb

def signup_after_job_post 
    resource ||= User.new 
    respond_with(resource) 
end 
+1

我不明白您發佈的代碼應如何交互。 「資源」在哪裏設置?局部變量'resource'不會通過重定向傳遞。 – ptd 2015-02-23 16:30:02

+0

完全同意...所以我想我只是簡單地將對象從一個控制器動作傳遞給另一個控制器動作? – 2015-02-23 16:48:47

回答

1

雖然像something_path的助手採取對象本身,內部,它們只是調用該對象的.id方法和僅傳遞ID輸入到路線本身。因此,在接收該路線的行動中,您總是需要執行以下操作:

resource = User.find params[:id] 
+0

我不知道。謝謝 – 2015-02-23 16:49:43

+0

好的,問題是資源還沒有ID。它尚未保存到數據庫中。 – 2015-02-23 16:51:09

+0

然後你可能不應該重定向,通常在這種情況下,你只需渲染髮送對象的視圖(它將顯示阻止對象被創建的錯誤)。只要從你的方法/幫手的名字中搜集我的內容,你可以讓別人發佈一份工作,而不必先創建一個用戶?您應該重新考慮這一點,即使您剛剛創建了一個將在稍後填寫的(大部分)空用戶,您也需要在工作記錄中使用有效的「user_id」。 – smathy 2015-02-23 16:55:53