2011-12-18 107 views
1

我有兩個步驟。Ruby on Rails:將Project_ID從最終表單提交到新表單

第3步 - 創建一個新項目。 步驟4 - 爲剛剛在步驟3中完成的項目創建一個新的討論帖子。

問題是;我無法弄清楚如何讓步驟4瞭解剛剛完成的項目的project_id。第3步使用projects_controller,第4步使用posts_controller。我正在考慮在projects_controller的def Create中使用Sessions [],然後以某種方式在posts_controller的def New中獲取該值。不工作,或不能如何不幸。

projects_controller

def create 
    @project = current_user.projects.build(params[:project]) 
    session[:step3_project_id] = params[:id] 

    respond_to do |format| 
    if @project.save 
     format.html { redirect_to project_step_4_path, notice: 'Project was successfully created.' } 
     format.json { render json: @project, status: :created, location: @project } 
    else 
     format.html { render action: "new" } 
     format.json { render json: @project.errors, status: :unprocessable_entity } 
    end 
    end 
end 

回答

2
redirect_to project_step_4_path(:step3_project_id=>params[:id]) 
+0

我想你需要一個散列,我可能是錯的:redirect_to的project_step_4_path({:step3_project_id => PARAMS [:ID]}) – daniel 2011-12-18 22:34:51

+0

感謝@klochner和丹尼爾 - 這不工作。並將project_id放入URL中。我在posts視圖中將其作爲隱藏字段值=> params [:step3_project_id]調用。是否有更高效,安全的方式從posts_controller調用它? – 2011-12-18 22:39:32

+0

會話是隱藏參數的唯一方法。如果您擔心安全問題,您應該擁有比隱藏參數更強大的功能(obscurity!= security)。 – klochner 2011-12-18 23:13:27