Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 模型名称不同于控制器的表单__Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

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