2013-11-29 3 views
1

У меня есть форма, которая должна иметь возможность взаимодействовать с 5 (и, возможно, более) моделями. Это следующее:Взаимодействие с 5 моделями в форме рельсов

Пациент - необходимо создать запись и данные пациента (имя, адрес и т. Д.).
Форма - Сохраняет название и версию формы.
Вопросы - отслеживает вопросы, связанные с каждой формой.
Ответы - ответы на вопросы, которые дает пациент.
Форма ответа - отслеживает пациента, заполнившего форму, и в какой форме она была.

Я создал макет модели и то, что я имею в виду данных будет выглядеть следующим образом: Google Doc - DB Layout

В форме ответа, отношения completed_by поли принимают во внимание, что пользователь, третья сторона , или пациент может заполнить форму

Я застрял на лучшем пути, чтобы сделать все это через одну форму. Сейчас я прохожу через контролера пациента и пациента/нового взгляда, потому что я представляю, что все это связано с пациентом. Я просто не совсем уверен, как сделать все это вложенное внутри самой формы (form_for, form_tag, fields_or?), А затем справиться с этим в действии создания контроллера. Даже после того, как я собрал кучу railscasts и т. Д., Я все еще очень застрял. Любое понимание было бы высоко оценено.

+0

Можете ли вы описать отношения между каждой из моделей? – jason328

+0

@ jason328 Извините за неопределенность. Я добавил документ, чтобы показать структуру, о которой я думаю. Буду признателен за любую оказанную помощь. – sturoid

ответ

1

Ну, вот что я могу понять из вопроса. Там будет пять моделей

пациента, форма, вопрос, ответ, Formresponse

Теперь форма будет иметь много вопросов. У Вопроса будет много ответов. У Formresponse будет много ответов.

Структура модели должна быть

class Patient < ActiveRecord::Base 
    has_many :formresponses 
end 

class Form < ActiveRecord::Base 
    has_many :questions 
    has_many :formresponses 
end 

class Question < ActiveRecord::Base 
    belongs_to :form 
    has_many :answers 
end 

class Answer < ActiveRecord::Base 
    belongs_to :question 
end 

class Formresponse < ActiveRecord::Base 
    belongs_to :form 
    belongs_to :patient 
end 

Теперь вы будете иметь одну форму для создания/редактирования информации о пациенте, который должен быть прост, как не вложенности не существует.

Создание форм будет сложным. Сохранение атрибутов класса Form будет простым. Чтобы хранить атрибуты класса Question, вам нужно будет обрабатывать их в контроллере. создать элементы формы, такие, что имя переплетены на «вопросы»

например,

<input type="text" name="questions[0][name]" value="some name" /> 
<input type="text" name="questions[0][help_text]" value="some help text" /> 

примечание - имя и help_text атрибуты вашей модели Вопрос

Теперь в контроллере можно перебирать каждый значение params [: questions], чтобы получить значение induvidual form.

так, то это будет что-то вроде этого

params[:questions].each do |question| 
    q = Question.new(question) 
    @form.questions << q #This will append the question to your @form instance 
end 
... 
@form.save 

Аналогично вы можете сделать это для хранения ответов. Надеюсь, теперь вам немного ясно.

+0

Благодарим за помощь. Итак, в форме я вижу, что есть form_for @patient, и тогда вы будете делать поля для вопросов и ответов? Я действительно запутался в том, как вложить эти две вещи внутрь самой формы. – sturoid

+0

Ну, если ответы - это всего лишь ответы, которые пользователь вводит, тогда вам это не понадобится в Редактировании формы. Я упоминал, что должен быть внутри формы, чтобы его значения переходили к форме. Все, что вам нужно сделать, это прочитать их и сохранить соответственно. Я думаю, вы сбиты с толку. Будет хорошей идеей записать все действия, которые вы хотите, тогда вы можете выяснить, как хранить там значения –

+0

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

Смежные вопросы