2

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

它不正确的一件事是你的路径。您必须手动去替换对user_pathwithadmin_user_path等的引用。这很乏味。

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

使用 Rails 4。

4

1 回答 1

3

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

查看生成器源代码以了解原因:

<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也一样


如果你有时间和耐心,最好的办法是在代码库上解决这个问题并提出 PR。毕竟这是开源的重点。

如果您朝这个方向发展,请先查看未解决的问题,我没有深入研究,但似乎正在就此事进行不同的对话。像https://github.com/rails/rails/pull/13927https://github.com/rails/rails/issues/21652


或者您可以使用似乎支持命名空间的现有 gem,例如Beautiful-Scaffold

于 2015-10-19T04:49:27.773 回答