我是新来的铁路。我使用 rails 3.0.5 。
我有一个 EMPLOYEE 资源,但我想用另一个外部控制器 (emp_profile_controller) 来管理它。这个外部控制器 (emp_profile_controller) 管理一些操作 (index, new_employee, create_employee, edit_employee, update_employee ecc..)。
我这个控制器的路线是:
controller :emp_profile do
get 'emp_profile' => :index
get 'emp_edit_profile' => :edit_employee
put 'emp_edit_profile' => :update_employee
get 'new_employee' => :new_employee
post 'new_employee' => :create_employee
get 'emp_list' => :emp_list
end
我如何使用一种表单来处理此控制器中的创建和更新操作?
我试过:
form_for(@employee, :url => { :controller => "emp_profile"}) do |f|
但它不起作用。
如果我一次只管理一项操作(创建或更新),则 url_for 有效,例如:
form_for(@employee, :url => { :controller => "emp_profile", :action => "update_employee" }
但是我怎样才能用一种形式处理这两个动作呢?
感谢您的光临,如果我问了一个愚蠢的问题,我深表歉意。
编辑
现在,我解决了检查表单文件中是否存在对象,如果存在,我使用 UPDATE 操作路径设置一个变量,否则,我使用 CREATE 操作路径设置一个变量。因此,在 form_for 语句中,我将 url_for 与上述变量一起使用。
<% if @employee.new_record?
action = "create_employee"
method = "post"
else
action = "update_employee"
method = "put"
end
%>
form_for(@employee, :url => { :controller => "emp_profile", :action => action }, :method => method
我不认为这是最好的方法,但它有效,我只能使用一个表单文件。