gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:47:27 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com