Form_for,型号名称与控制器不同

lul*_*ala 4 ruby-on-rails ruby-on-rails-3

我有一个名为的模型Person,我希望有一个名为的资源Employee.我发现这会阻止form_for魔法.

我需要传入@person对象本身,因此form_for可以选择正确的操作路径(创建或更新).

然而,这将意味着form_for使用POST people_pathPUT person_path输出,而不是employee_paths.

当我的模型和控制器有不同的名称时,是否可以拥有所有Rails约定的好东西?

jbm*_*yid 11

如果你想在路线/网址中使用"雇员",你可以在路线中使用"路径",例如.创建控制器作为people_controller但在路由中

resources :people, path: "employees"
Run Code Online (Sandbox Code Playgroud)

所以路线就像

new_person GET    /employees/new
people GET    /employees
Run Code Online (Sandbox Code Playgroud)

等等

所以下面的工作

<%= form_for @people do |f| %>
  ...
<% end %>
Run Code Online (Sandbox Code Playgroud)

注意:为此,您必须使用Person模型


lfx*_*ool 5

你可以添加一个选项:url:employee_path

例如

<%= form_for @people, :as => :post, :url => employee_path(@people) do |f| %>
  ...
<% end %>
Run Code Online (Sandbox Code Playgroud)

  • 是的,但这意味着我必须手动处理'更新'案例.我正在寻找避免这种情况的方法. (4认同)