我有两个关联模型,Employee
和Company
:如何从控制器A的一个动作重定向到控制器B的动作并返回到Rails?
class Employee < ActiveRecord::Base
attr_accessible :name
belongs_to :company
attr_accessible :company_id
end
class Company < ActiveRecord::Base
attr_accessible :name, :industry, :owner
has_many :employees
end
我想要实现的是,当在新员工的形式,用户类型的公司名称不存在,他/她应该是重定向到新的公司形式,名称字段已填写上一个表单的值,填写它以便创建公司,然后重定向到“员工成功创建”页面(但当且仅当公司首先被创建)。
我已成功在员工创建的同时创建一个公司,下面的代码:
def create
@employee = Employee.new(params[:employee])
@company = Customer.find_or_create_by_name(params[:company][:name])
@company.employees << @employee
@company.save
@employee.save
end
然而,这并没有给我填写公司的其余选项信息。
试用redirect_to
,我也设法发送用户到编辑公司的表格。
# one way to tell if the company has all its attributes filled
if @company.industry.blank?
redirect_to edit_company_path(@company), notice: "Please edit the company details" and return
end
*的and return
声明是必要的,否则我得到一个“的redirect_to的被称为多次”错误*
然而,这并不是所期望的行为 - 的原因有两个:
- 即使公司没有创建员工。
- 用户未被通知员工创建。
所以,我的想法是,我重定向到公司控制器和行动创造正确的方式,我应该以某种方式重定向回我在员工控制器是(前右@employee.save
)其中。但是如何?此外,这是最好的和“最轨道”的方式来做到这一点?
检出路由http://guides.rubyonrails.org/routing.html – fneron 2013-04-08 20:05:35