Список кодов контроллера внизу страницы
У меня есть простой проект вложения рельсов, с которым я практикуюсь, и у меня возникла проблема, которую я, похоже, не могу обнаружить.
Когда я посещаю URL: localhost:3000/authors/1/books
Я получаю ВСЕ книги, а не книги, которые соответствуют автору с идентификатором = 1.
Вот мой код:
У меня есть Автор модель и контроллер и Книга Автор и контроллер:
class Author < ActiveRecord::Base
has_many :books
end
class Book < ActiveRecord::Base
belongs_to :author
end
Файл маршрутов выглядит так:
resources :authors do
resources :books
end
Вот миграция для Книг:
class CreateBooks < ActiveRecord::Migration
def self.up
create_table :books do |t|
t.string :title
t.integer :author_id
t.timestamps
end
end
def self.down
drop_table :books
end
end
Содержит атрибут для author_id
У меня также есть этот код в файле Books _form.html.erb:
<div class="field">
<%= f.label :author_id %><br />
<%= f.collection_select(:author_id, Author.all, :id, :first_name) %>
</div>
Я могу выбрать автора из выпадающего списка и успешно сохранить его. База данных показывает, что author_id действительно сохраняется в соответствующей модели Book.
Когда я запускаю rake routes
, я получаю это как один из маршрутов:
author_books GET /authors/:author_id/books(.:format)
Но, когда я пробую этот URL - я просто получаю список ALL книг. Не книги, соответствующие собственному автору.
Кроме того, у меня есть мои контроллеры, настроенные на возврат JSON, и когда я помещаю localhost:3000/authors.json
, он возвращает правильный объект JSON, но когда я ставлю localhost:3000/authors/1/books.json
, он возвращает ' null '
Вот снимок экрана с моими текущими списками баз данных, чтобы показать, что данные точно есть:
Можете ли вы увидеть что-то, что может быть причиной проблемы ??? Я могу предоставить больше кода, если вам это нужно.
EDIT
После запуска rails console
я получаю правильные данные - поэтому я не уверен, почему маршрут все еще не работает:
irb(main):002:0> Author.find(1).books
=> [#<Book id: 1, title: "Carrie", author_id: 1, created_at: "2012-01-08 21:20:57", updated_at: "201
2-01-08 21:20:57">]
Вот список полных маршрутов: https://gist.github.com/1580058
Вот контроллер Books: https://gist.github.com/1580064
Вот контроллер Авторы: https://gist.github.com/1580134
Извините, только что понял, что неправильно сформулировал первоначальный вопрос - я получаю весь список Книг , а не Авторов - исправлено