Я предполагаю, что проблема в том, что вы используете Note.new
здесь:
<%= simple_form_for [book, Note.new], remote: true do |f| %>
<%= f.input :title, placeholder: "title", label: false, autofocus: true %>
<%= f.input :body, placeholder: "title", label: false, autofocus: true %>
<%= f.button :submit, "Create note" %>
<% end %>
Таким образом, у вас никогда не будет никаких значений в форме, потому что форма всегда основана на новом Note
объект.
Поскольку вы создаете @note
как в своих действиях new
, так и create
, я считаю, что вы должны делать:
<%= simple_form_for [book, @note], remote: true do |f| %>
<%= f.input :title, placeholder: "title", label: false, autofocus: true %>
<%= f.input :body, placeholder: "title", label: false, autofocus: true %>
<%= f.button :submit, "Create note" %>
<% end %>
Я не использую simple_form
так что это выстрел в темноте.
Кроме того, как заявляет Джон Галлахер в комментариях, это:
@note = @book.notes.create(note_params)
На самом деле должно быть так:
@note = @book.notes.build(note_params)
При создании чего-то вроде @note
обычно используется .build
вместо .create
, потому что .build
не сохраняет @note
, что делает условное выражение if @note.save
немного более разумным.