Rails转发到父视图

时间:2012-12-04 15:57:29

标签: ruby-on-rails redirect

我有两个型号

class Project < ActiveRecord::Base

  attr_accessible :created_at, :name, :status, :company_id
  has_many :phases, :dependent => :destroy

end


class Phase < ActiveRecord::Base

  attr_accessible :created_at, :date_due, :name, :project_id, :status
  belongs_to :project

end

创建新阶段时,我想将用户转发到新阶段所属项目的show project页面。

我尝试了这个,以及一些变体,但我不太确定编写它的最佳方式:

def create
    @phase = Phase.new(params[:phase])

    respond_to do |format|
      if @phase.save
        redirect_to @phase.project
      else
        format.html { render action: "new" }
        format.json { render json: @phase.errors, status: :unprocessable_entity }
      end
    end
  end

谢谢!


编辑1

Rake Routes:

          phases GET    /phases(.:format)                  phases#index
                 POST   /phases(.:format)                  phases#create
       new_phase GET    /phases/new(.:format)              phases#new
      edit_phase GET    /phases/:id/edit(.:format)         phases#edit
           phase GET    /phases/:id(.:format)              phases#show
                 PUT    /phases/:id(.:format)              phases#update
                 DELETE /phases/:id(.:format)              phases#destroy
        projects GET    /projects(.:format)                projects#index
                 POST   /projects(.:format)                projects#create
     new_project GET    /projects/new(.:format)            projects#new
    edit_project GET    /projects/:id/edit(.:format)       projects#edit
         project GET    /projects/:id(.:format)            projects#show
                 PUT    /projects/:id(.:format)            projects#update
                 DELETE /projects/:id(.:format)            projects#destroy

编辑2

更新控制器 - 现在正在运行。需要删除respond_to块(可能只包括重定向周围的不同格式选项)

  def create
    @phase = Phase.new(params[:phase])

    if @phase.save
      redirect_to project_url(@phase.project)
    else
      render action: "new"
    end

  end

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

redirect_to project_path(@phase.project)

注意:只有在正确设置路线的情况下才能使用此功能。

有关详细信息,请参阅Rails指南中的Using redirect_to部分。

修改

问题可能是我们没有将id传递给project_path(:id)

redirect_to project_path(@phase.project.id)