Генерация правильных путей в скаффолдах Rails с пространством имен
Когда вы используете 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.
1 ответ
С рельсов встроенными генераторами вы не можете.
Посмотрите исходный код генератора, чтобы понять, почему:
<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
сгенерировать путь редактирования без учета расстояния между именами. (И хамл-рельсы делают то же самое)
Если у вас есть время и терпение, лучше всего это исправить на базе кода и предложить PR. Это главное в open-source.
Если вы идете в этом направлении, сначала посмотрите на открытые вопросы, я не углублялся в это, но похоже, что по этому вопросу идут разные разговоры. Например, https://github.com/rails/rails/pull/13927 или https://github.com/rails/rails/issues/21652
Или вы можете использовать существующие драгоценные камни, такие как https://github.com/rivsc/Beautiful-Scaffold, которые, кажется, поддерживают пространство имен