Rails `form_with` 当有 `has_one` 关联时

Rails `form_with` when having a `has_one` association

Rails 假定我的 has_one 联想是复数。请看看我的代码片段:

我的模型:

class Order  < ApplicationRecord
  has_one :order_detail
end

我的routes.rb:

resources :orders do
  resource :order_detail
end

我的views/order_details/new.rb:

...
<%= form_with(model: [@order, @order_detail]) do |form| %>
...
<% end %>

导航至 localhost:3000/orders/1/order_detail/new。我得到的错误是:

undefined method `order_order_details_path' for #<#<Class:0x00007ff9be1b66a0>:0x00007ff9be1b4cd8>
Did you mean?  order_order_detail_path
               order_order_detail_url

我知道路由的计算结果应该是 order_order_detail_path,但数组显然不会这样做。

如何解决这个问题?

我最终通过将 :order_details 设为复数来解决了这个问题。

resources :orders do
  resource :order_details
end

has_one 关联仍将在控制器和参数中起作用。