2011-12-18 11 views
1

私は2つのステップを持っています。Ruby on Rails:最後のフォームから新しいフォームにProject_IDを渡す

ステップ3 - 新しいプロジェクトを作成します。 ステップ4 - ステップ3で作成したプロジェクトの新しいディスカッションポストを作成します。

問題があります。私はステップ4にちょうど作られたプロジェクトのproject_idを知る方法を理解できません。ステップ3はprojects_controllerを使用し、ステップ4はposts_controllerを使用します。私は、プロジェクトのコントローラでdef Createでセッション[]を使用し、何らかの形でその値をdef_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

+0

感謝@klochnerとダニエル - ないこと作業。今すぐURLにproject_idを配置します。私は隠しフィールドの値=> params [:step3_project_id]として投稿ビューで呼びます。 posts_controllerから呼び出す方が効率的で安全な方法はありますか? –

+0

セッションがパラメータを非表示にする唯一の方法です。セキュリティが懸念される場合、おそらくパラメータ(隠されている!=セキュリティ)を隠すよりも強力な何かを持つ必要があります。 – klochner

関連する問題