在命名空间的Rails脚手架中生成适当的路径

时间:2015-10-15 20:08:28

标签: ruby-on-rails namespaces rails-generators

当您使用rails generate scaffold admin/user --model-name=Userrails generate scaffold_controller --model-name=User时,它几乎以命名空间方式生成所有内容。您的控制器获得app/controllers/admin/users_controller.rbapp/views/admin/users/填充了您的观点。

一件事情不对,就是你的道路。您必须手动将user_path的引用替换为admin_user_path等。这很乏味。

有没有办法告诉Rails生成指向新命名空间的路径,而不是模型所在的命名空间?

使用Rails 4。

1 个答案:

答案 0 :(得分:3)

使用rails内置生成器,你不能。

请参阅generator source code了解原因:

<td><%%= link_to 'Show', <%= singular_table_name %> %></td>
<td><%%= link_to 'Edit', edit_<%= singular_table_name %>_path(<%= singular_table_name %>) %></td>
<td><%%= link_to 'Destroy', <%= singular_table_name %>, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>

正如您所看到的,它与edit_<%= singular_table_name %>_path一起生成编辑路径,而不考虑名称间距。 (和haml-rails does the same

最好的办法是,如果你有时间和耐心,就可以在代码库中解决这个问题并提出公关建议。毕竟这是开源的重点。

如果你朝着这个方向前进,先看看未解决的问题,我还没有深入研究,但似乎不同的对话正在进行中。与https://github.com/rails/rails/pull/13927https://github.com/rails/rails/issues/21652

相同

或者你可以使用像Beautiful-Scaffold这样似乎支持名字间距的现有宝石