2014-10-12 2 views
0

아래와 같이 새로운 액션, 생성 액션 및 편집 액션이있는 컨트롤러가 있습니다. 지금은 양식에 3 개의 버튼이 있습니다. 하나는 새 프로젝트 (신규)를 시작하고, 또 다른 버튼은 저장 (생성)하고, 세 번째 버튼은 생성 된 프로젝트를 편집 (편집)합니다.ruby ​​on rails 하나의 버튼에서 3 개의 액션을 체인으로 연결합니다.

나는 3 개의 모든 동작을 순서대로 결합하는 단일 버튼을 만들고 싶습니다. 새로 만들기를 클릭 한 다음 작성한 다음 편집하십시오.

그럴 수 있습니까? 프로젝트 (create``에 오며 'Post)를 저장 한 후

# GET /projects/new 
# GET /projects/new.json 
def new 
    @project = Project.new 

    respond_to do |format| 
    format.html # new.html.erb 
    format.json { render :json => @project } 
    end 
end 

# GET /projects/1/edit 
def edit 
    @project = Project.find(params[:id]) 
end 

# POST /projects 
# POST /projects.json 
def create 
    @project = Project.new(params[:project]) 

    respond_to do |format| 
    if @project.save 
     format.html { redirect_to @project, :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 
+0

당신은 사용자가 편집 양식을보고 싶어? –

+0

@ Jared : 신속한 응답에 감사드립니다. 네, 새로운 프로젝트를 만들 때 편집 폼을 보길 원합니다. – rh4games

+0

확인. Aalaa Mohamed의 대답을보십시오 ('edit'로 리다이렉트) –

답변

1
def create 
@project = Project.new(params[:project]) 

respond_to do |format| 
    if @project.save 
    format.html { redirect_to edit_project_path(@project), :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 
+0

이것은 OP의 요구 사항을 충족시킵니다 만,'before_action' 콜백을 싫어하고'# create'에 리다이렉트를 넣을 것입니다. 아마도 개인적인 스타일 일 것입니다. –

+0

맞습니다 :) 수정 사항을 확인하십시오. 작동합니까? –

+0

@AalaaMohamed : 제안에 감사드립니다. 나는 그것을 시험해 보았고, "create"와 "edit"를 묶는 데는 효과가 있었지만, "new"와 "create"를 연결하는 데는 효과가 없었다. 내 목표는 동시에 3 개를 모두 연결하는 것입니다. – rh4games