我有两个型号
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
答案 0 :(得分:1)
尝试以下方法:
redirect_to project_path(@phase.project)
注意:只有在正确设置路线的情况下才能使用此功能。
有关详细信息,请参阅Rails指南中的Using redirect_to部分。
修改强>
问题可能是我们没有将id
传递给project_path(:id)
。
redirect_to project_path(@phase.project.id)