Почему моя форма должна содержать данные только одной модели?

Более общее решение, избегая жесткого кода и заполнения «NA» для отсутствующих данных:

my_dict = {('A1', 'A2'): 0.6, ('A3', 'A1'): 1, ('A2', 'A2'): 1, ('A2', 'A1'): 0.3}

labs = []
for key in my_dict.keys():
    for k in key:
        if k not in labs:
            labs.append(k)
labs = sorted(labs)

print("Table\t" + "\t\t".join(labs))
for i in labs:
    print(i, end="\t\t")
    for j in labs:
        try:
            print(my_dict[(i, j)], end="\t\t")
        except KeyError:
            print("NA", end="\t\t")
    print()

Выход:

Table   A1      A2      A3
A1      NA      0.6     NA      
A2      0.3     1       NA      
A3      1       NA      NA      
0
задан Nate 19 January 2019 в 09:54
поделиться

1 ответ

Я считаю, что проблема здесь в том, что синтаксис вашей строки fields_for в вашем представлении.

Измените f.fields_for @participant.student_detail do |student_detail_field|

на f.fields_for :student_detail, @participant.student_detail do |student_detail_field|

Я бы поспорил, если бы вы поместили в свой контроллер оператор binging.pry или put, чтобы увидеть, что ваши параметры student_detail_attributes даже не добраться до ваших параметров. Вы можете просто вставить puts params.inspect в свой контроллер, чтобы проверить, поступают ли параметры так, как вы ожидаете. Ваш сильный синтаксис params выглядит корректно, как и модели, поэтому я думаю, что это проблема с вашими взглядами.

РЕДАКТИРОВАТЬ

Вот еще несколько вещей, которые можно попробовать. Как я упоминал в своем комментарии, я обычно не делал бы

@participant = Participant.create(participant_params)

Я бы просто сделал:

@participant = Participant.new(participant_params)
if @participant.save
#etc
end

Выше также будет очищать ваш код немного. (Также я заметил, что у вас нет случая в этом действии для того, что делать, когда участник не сохраняет - в качестве примечания вы должны написать некоторый код для обработки этого)

Также, если ни один из этих выше работы, иногда я обнаружив, что с accept_nested_attributes я должен установить модели как "обратные" друг другу. См. Эту статью для получения дополнительной информации: https://robots.thoughtbot.com/accepts-nested-attributes-for-with-has-many-through - о has_many, но я думаю, что он должен также Относитесь к has_one - попробуйте в модели Участника:

has_one :student_detail, :dependent => :destroy, inverse_of: :participant

Посмотрите, получит ли какой-либо из вышеперечисленных (или сочетание обоих) сохранение вложенной модели.

0
ответ дан armont_development 19 January 2019 в 09:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: