По какой-то причине форма, кажется, работает как задумано, но она не обрабатывается правильно:
Вот параметры, которые отправляются в мой метод создания абзаца #
Parameters: {"utf8"=>"✓", "authenticity_token"=>"s6V7WS6NZwcu4ZAeSenkEgVEd6MrrDD1asMjPEOuZHyglMKoGQ/5cP/USzF/5MJV3wyFn+siC2t47dSFkVtuVQ==", "paragraph"=>{"sentiments_attributes"=>{"0"=>{"body"=>"test"}}}}
Я получаю эту ошибку при попытке отправить форму: Sentiments body can't be blank
#paragraphs_controller.rb
def create
@paragraph = Paragraph.new(paragraph_params)
@paragraph.sentiments.build
if @paragraph.save
redirect_to root_url
else
puts @paragraph.errors.full_messages
redirect_to root_url
end
end
private
def paragraph_params
params.require(:paragraph).permit(:sentiments_attributes => [:body])
end
У меня есть 2 модели, Sentiment & Paragraph.Абзац - это коллекция настроений.Поэтому, если у меня есть форма для создания нового абзаца, он одновременно создает настроение.
class Sentiment < ApplicationRecord
belongs_to :paragraph, optional: true
validates :body, presence: true
end
class Paragraph < ApplicationRecord
has_many :sentiments
accepts_nested_attributes_for :sentiments
end
<%= form_for(@paragraph) do |f| %>
<%= f.fields_for :sentiments do |u| %>
<%= u.text_area :body %>
<% end %>
<%= f.submit %>
<% end %>
ОБНОВЛЕНО
Необходимо удалить @paragraph.sentiments.build
изparagraphs_controller#create