当您使用rails generate scaffold admin/user --model-name=User
或rails generate scaffold_controller --model-name=User
时,它几乎以命名空间方式生成所有内容。您的控制器获得app/controllers/admin/users_controller.rb
,app/views/admin/users/
填充了您的观点。
一件事情不对,就是你的道路。您必须手动将user_path
的引用替换为admin_user_path
等。这很乏味。
有没有办法告诉Rails生成指向新命名空间的路径,而不是模型所在的命名空间?
使用Rails 4。
答案 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/13927或https://github.com/rails/rails/issues/21652
相同或者你可以使用像Beautiful-Scaffold这样似乎支持名字间距的现有宝石