rails如何将Associated Model与admin命名空间一起使用

谢谢,我可以在这里提问。 我正在使用rails 5.1.4和ruby 2.5.0。 我有两个模型A和模型B.

Model A has_many bs Model B belongs_to a 

admin-user可以生成新的a条目,并且可以生成新的b条目。 no-admin-user可以显示,索引或保留。

的routes.rb

  resources :as, only: [:index, :show] do resources :bs, only: [:index, :show, :reserve] end namespace :admin do resources :as, only: [:create, :edit, :update, :destroy, :show] do member do post :activate get :activate post :deactivate get :deactivate end resources :bs, only: [:create, :edit, :update, :destroy, :show] end end 

app/views/admin/as/show.html.erb您可以看到a的DB Entry的值。 所以现在我的想法是要意识到你可以用表格添加b的新B条目。 我试过这个show.html.erb

show.html.erb

  

:



将生成表单,但html-sourcecode不显示“admin-route-path”。 但我怎么这样?

  <form action="/as/1/bs" accept-charset="UTF-8" method="post" 

我如何更改form_with部分,我可以从b添加条目到相关模型?

似乎你希望你的表单达到url /admin/as/bs 。 要构建指向命名空间控制器的链接,您可以使用以下forms:

 link_to [:admin, @a, @b], 'A admin show' link_to admin_as_bs_path(@a, @b), 'A admin show' 

这同样适用于表格

 form_for [:admin, @a, @b] do ... form_for @a, url: admin_as_bs_path(@a, @b) 

路由助手的名称可能有误。 检查rake routes的输出。

要获得您正在寻找的路线,您需要拥有嵌套资源。 你可以在这里找到一个很好的解释。

我找到了相关模型的解决方案,它工作正常。 谁能证实这一点。 谢谢

<%= form_with(model: [:admin, @a,B.new ], local: true) do |f| %> <% end %>