Шаг за шагом
Новое приложение
rails new bookstore
Добавить автора леса
rails g scaffold author name
Добавить книгу леса
rails g scaffold book name author:references
Обновление маршрутов
С
resources :books
resources :authors
К
resources :authors do
resources :books
end
Покажем ссылку на новую книгу в приложении / views / авторы / show. html .erb, добавьте
<%= link_to 'New book', new_author_book_path(@author) %> |
После создания первого автора и посещения http://localhost: 3000 / авторы / 1 / books / new у нас есть ошибка: NoMethodError in Books # new
undefined method `books_path'
Чтобы исправить, сначала в BooksController добавьте
before_action :set_author, only: [:new]
private
def set_author
@author = Author.find(params[:author_id])
end
И в app / views / books / _form. html .erb
<%= form_with(model: book, url:[@author, book], local: true) do |form| %>
Посещение снова http://localhost: 3000 / авторы / 1 / books / new
NameError in Books # new
undefined local variable or method `books_path'
Исправлено в приложении / views / books / new. html. erb
Изменить
<%= link_to 'Back', books_path %>
на
<%= link_to 'Back', author_books_path(@author) %>
Теперь мы можем отрендерить http://localhost: 3000 / авторы / 1 / книги / новые
Я думаю, что здесь вы получили все, что вам нужно