Построить полиморфные ассоциации рельсов - PullRequest
0 голосов
/ 08 июня 2018

Итак, у меня есть следующее

class OptionOfSingleChoice < ApplicationRecord
  has_many  :option_choices, as: :choiceable
end

class OptionChoice < ApplicationRecord
  belongs_to :choiceable, polymorphic: true, optional: true
end

В новом действии контроллера OptionOfSingleChoice я делаю следующее:

def new
    @optionofsinglechoice = OptionOfSingleChoice.new()
    setup_three_default_choices()
    3.times {@optionofsinglechoice.option_choices.build}
end

и представление нового действия

<div class="form-group">
    <%= test.fields_for :option_choices do |builder|  %>
        <%= render 'option_choices/form', :f => builder  %>
    <% end %>
</div>

И представление формы для option_choice выглядит следующим образом

<div class="form-group">

  <%= f.text_field(:name, :class => 'form-control') %>
  <%= f.text_field(:price, :class => 'form-control') %>
  <%= f.file_field :choice_image, multiple: false, direct_upload: false,:class => 'form-control' %>

</div>

Моя проблема в том, что теперь я ожидаю, что форма для option_choice будет отображаться 3 раза, а фактически только 1 раз.Я не могу понять, почему, но я подозреваю, что это потому, что Choisable не создан.Когда я смотрю на объекты OptionChoice, они выглядят так:

<OptionChoice id: nil, name: nil, price: nil, choiceable_id: nil, choiceable_type: "OptionOfSingleChoice", created_at: nil, updated_at: nil>

Я предполагаю, что мне нужно каким-то образом создать: choiceable каким-то образом.Надеюсь, вы можете помочь мне

1 Ответ

0 голосов
/ 11 июня 2018

Sry brainfart Я забыл добавить accepts_nested_attributes_for: option_choices

...