ruby-on-rails - 通过创建和更新操作将 Single Rails 表单管理到其他 Controller

标签 ruby-on-rails controller routes form-for

我是 Rails 的新手。我使用 rails 3.0.5 。

我有一个 EMPLOYEE 资源,但我想用另一个外部 Controller (emp_profile_controller) 来管理它。 这个外部 Controller (emp_profile_controller) 管理一些操作 (index, new_employee, create_employee, edit_employee, update_employee ecc..)。

这个 Controller 的路由是:

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

我如何使用一种形式来处理此 Controller 中的创建和更新操作?

我试过:

form_for(@employee, :url => { :controller => "emp_profile"}) do |f|

但它不起作用。

如果我一次只管理一个操作(创建或更新),url_for 会起作用,例如:

form_for(@employee, :url => { :controller => "emp_profile", :action => "update_employee" }

但是我怎样才能用一种形式处理这两个 Action 呢?

感谢您的参与,如果我问了一个愚蠢的问题,我深表歉意。

编辑

目前,我解决了检查对象是否存在于表单文件中的问题,如果存在,我将使用 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

我认为这不是最好的方法,但它确实有效,而且我只能使用一个表单文件。

最佳答案

由于您的模型名称和 Controller 名称不同,您可以将此行添加到您的路由中

resources :employees,:controller=>"emp_profile",:path=>"emp_profile"

将create_employee、update_employee的方法名分别改为create和update。

然后如下所示更改您的 form_for

<%= form_for @employee do |f| %>
....
<% end %>

关于ruby-on-rails - 通过创建和更新操作将 Single Rails 表单管理到其他 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16069589/

相关文章:

casasController.php 第 51 行中的 Laravel 5.2 FatalErrorException

ruby-on-rails - Ruby on Rails fields_for 在编辑操作中生成太多字段

AngularJS:注入(inject) Controller 时工厂始终未定义

routes -/favicon.ico 被附加到 Rails 4 路由

ruby-on-rails - -bash : syntax error near unexpected token

css - Sass 不加载 .scss

html - 如何将 CSS 文件链接到我在 Rails 中的 View ?

ruby-on-rails - Rails 在创建时向表中添加数据

ruby-on-rails-3 - Rails 3 从另一个 Controller 渲染部分(错误:ActionView::MissingTemplate)

html - angularjs View 仅在硬刷新时加载而不是在重定向时加载