Rails Form не сохраняет атрибуты ассоциации - PullRequest
0 голосов
/ 27 мая 2019

По какой-то причине форма, кажется, работает как задумано, но она не обрабатывается правильно:

Вот параметры, которые отправляются в мой метод создания абзаца #

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

1 Ответ

0 голосов
/ 27 мая 2019

Необходимо удалить @ para.sentiments.build из paras_controller # create

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...