Я пытаюсь создать form_for для создания модели соединения между двумя другими моделями. У меня есть модель книги и модель пользователя, а другая называется Reads, это мое соединение. Вот как я создал ассоциации:Rails form_for и has_many через аргумент error
class User < ActiveRecord::Base
has_many :reads
has_many :books, :through => :reads
end
class Book < ActiveRecord::Base
has_many :reads
has_many :users, :through => :reads
end
class Read < ActiveRecord::Base
belongs_to :book
belongs_to :user
end
Я посмотрел на документы для form_for и смотрели эпизод railscast на многие-ко-многим ассоциаций, но я не могу понять, почему я м получают ошибку, когда я пытаюсь сделать Книжный # показать вид, где я положил форму:
First argument in form cannot contain nil or be empty
Вот моя форма в приложении/просмотрах/книгах/show.html.erb:
<%= form_for(@read) do |f| %>
<%= f.hidden_field :book_id, value: @book.id %>
<%= button_to 'Add to Reads', {controller: 'reads', action: 'create'}, {class: 'btn'} %>
<% end %>
Я думаю, что часть проблемы в том, что я пытаюсь чтобы создать объект Reads из модели Books, но я не уверен, что я делаю неправильно. Мне нужна кнопка «Добавить для чтения» на странице книги, чтобы пользователь мог выбрать эту книгу, чтобы добавить к своим «чтению». Я также добавляю идентификатор current_user в контроллере, а не в представлении. Вот мои действия создают из Считывает контроллер, если это помогает ...
def create
@read = Read.new(read_params)
@read.user_id = current_user.id
@read.save
if @read.save
# do this
else
# do that
end
end
И я использую сильный Params ...
def read_params
params.require(:read).permit(:user_id, :book_id)
end
Спасибо за любую помощь.
Ничего себе, это имеет смысл. Спасибо за совет. –