Генерация правильных путей в скаффолдах 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, которые, кажется, поддерживают пространство имен

Другие вопросы по тегам