【发布时间】:2013-04-10 18:41:52
【问题描述】:
我是 Rails 新手。我使用 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
我认为这不是最好的方法,但它很有效,而且我只能使用一个表单文件。
【问题讨论】:
标签: ruby-on-rails controller routes form-for