0
у меня есть такие модели:Вложенные атрибуты. Поле не обновляет
class Listicle < ActiveRecord::Base
...
has_many :listicle_sticker_tags, -> { order(listicle_sticker_id: :asc) }, class_name: 'ListicleStickerTag', dependent: :destroy
accepts_nested_attributes_for :listicle_sticker_tags, allow_destroy: true
end
class ListicleStickerTag < ActiveRecord::Base
belongs_to :listicle
belongs_to :listicle_sticker
end
И контроллер имеет:
class ListiclesController < ApplicationController
def basic_listicle_params
params.require(:listicle).permit :item_separator_color, :vote_count_color, :arrows_default_color,
:show_shareaholic, :arrows_on_hover_color, :arrows_selected_color, :items_order,
:show_stickers, :intro, :footer, :show_vote_feedback, :stickers_for_each_item,
on_load_scripts_attributes: [:id, :script, :position, :_destroy],
questions_attributes: [:body, :_destroy, :id],
listicle_sticker_tags_attributes: [:id, :listicle_sticker_id, :text, :_destroy]
....
end
И вид:
.form-group
[email protected]_questions.each do |question,idx|
=form.label 'ID:'
= question.id
=form.label 'Title:'
= question.body.present? ? question.title : "Item #{idx + 1}"
- @stickers.each do |sticker|
= sticker.id
= sticker.text
= form.fields_for :listicle_sticker_tags do |u|
.nested-fields.form-group
.field
= link_to_remove_association u, class: %(text-danger pull-right) do
%i.glyphicon.glyphicon-remove-circle{style:"position: relative; top: 25px; right: 2px; font-size: 18px;"}
= u.text_area :text, rows:4, class: %w(form-control)
= u.hidden_field :listicle_sticker_id, :value => sticker.id
.links
%br
=link_to_add_association 'Add script', form, :listicle_sticker_tags, class: %w(btn btn-primary pull-right)
Проблема: listicle_sticker_id выиграл 't обновляется и возвращается как ноль. , как вы видите, она даже не обновляется:
SQL (0.6ms) INSERT INTO `listicle_sticker_tags` (`listicle_id`, `text`) VALUES (39, 'hhhhhhhhhhhhhh')
(4.7ms) COMMIT
Rendered listicles/update.js.erb (0.4ms)
выход консоли выглядит следующим образом:
2.1.1 :067 > ListicleStickerTag.where(listicle_id: 39)
ListicleStickerTag Load (0.9ms) SELECT `listicle_sticker_tags`.* FROM `listicle_sticker_tags` WHERE `listicle_sticker_tags`.`listicle_id` = 39
=> #<ActiveRecord::Relation [#<ListicleStickerTag id: 35, listicle_id: 39, text: "hhhhhhhhhhhhhh", listicle_sticker_id: nil>]>
Что мне не хватает, чтобы сделать listicle_sticker_id, чтобы быть в курсе представить?
Что входит в переменную '@ stickers'? Являются ли они наклейками из базы данных или являются ли они новыми, неустановленными записями? –
Каковы параметры в журнале для этого запроса? у них есть собственный listicle_sticker_id? – faron