Ruby on rails 模型名称不同于控制器的表单_
我有一个名为Ruby on rails 模型名称不同于控制器的表单_,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个名为Person的模型,我想有一个名为Employee的资源。我发现这将停止magic的表单 我需要传入@person对象本身,以便表单可以选择正确的操作路径(创建或更新) 然而,这将意味着表单使用发布人员路径和将人员路径放入输出,而不是员工路径s 当我的模型和控制器有不同的名称时,是否有可能拥有所有Rails约定商品?您可以添加一个选项:url:employee\u path e、 g :post,:url=>员工路径(@people)do | f |%> ... 如果要在routes
Person
的模型,我想有一个名为Employee
的资源。我发现这将停止magic的表单
我需要传入@person
对象本身,以便表单可以选择正确的操作路径(创建或更新)
然而,这将意味着表单使用发布人员路径
和将人员路径
放入输出,而不是员工路径
s
当我的模型和控制器有不同的名称时,是否有可能拥有所有Rails约定商品?您可以添加一个选项:url:employee\u path
e、 g
:post,:url=>员工路径(@people)do | f |%>
...
如果要在routes/url中使用“employees”,可以在routes中使用“path”
如。
将控制器创建为人员\u控制器,但在路由中
resources :people, path: "employees"
所以路线会是这样的
new_person GET /employees/new
people GET /employees
等
所以下面的方法会奏效
<%= form_for @people do |f| %>
...
<% end %>
...
注意:为此,您必须使用Person模型,因此我已经构建了一个自定义的C.R.M.,它使用employees\U controller从Desive的用户模型传递和检索值。我不希望Desive视图可以访问,但我希望使用Desive进行用户身份验证,因为。。。让我们面对现实吧,他们已经很好地解决了这个问题
事实证明,我在这个问题上遇到了一些麻烦,我在表单中嵌入了一个Ruby标记:
<%= form_for @employee, as: :user, url: employees_path do |f| %>
我测试过了,效果很好。如果有人对这种方法有任何批评的话,我很乐意听到
我的环境:
- Rails 5.2.0
- 设计4.4.3
是的,但这意味着我也必须手动处理“更新”案例。我正在寻找一种方法来避免这种情况。我不是OP,但我更喜欢你的解决方案。如何将其用于新的操作?我目前正在尝试使用@people的form_,url:employee_path,html:{method::post}do | f |
,我得到一个错误,我缺少id,但它将我发送到show操作而不是create。@user3209270,url:employees_path
是createYes,对不起,我的意思是说employees_path
。我使用不同的模型,但与OP非常相似,在我的例子中,新闻
相当于员工
,而文章
相当于个人
。我正在使用@article的表单,url:news\u path,html:{method::post}do | f |
而我得到的全部错误是没有路径匹配{:action=>“show”,:controller=>“news”}缺少必需的键:[:id]
。我想我搞砸了。我做了另一个控制器(为了避免新的和新闻的混乱),它似乎可以工作。你在多种情况下使用你的人员模型吗?我的意思是,你有基于这个模型的其他资源吗?顺便说一句,“People”是一个可怕的模型名称-模型名称应该是单数的。是的,它用于多个上下文。我的错误是,Person应该是模型的正确名称
<%= form_for @employee, as: :user, url: employees_path do |f| %>
def new
@path = employees_path
end
def edit
@path = employee_path
end