2010-01-28 3 views
1

Это, вероятно, легко, но я немного новичок, иногда обворачиваю голову.Лучший способ сделать это RESTfully и right: Ruby on Rails

Сводка: Я пытаюсь сделать приложение контрольного списка, которое проходят технические специалисты, и отвечать на вопросы о том, что было выполнено или сделано в поле. Техники затем представляют это для обзора. Вопросы создаются, управляются и обновляются менеджерами.

ОБНОВЛЕНИЕ Я дизайнер, поэтому я естественно намагничиваю PS. Вот фотография концепции: http://screensnapr.com/u/a9k1ps.png

Контрольный список модель содержит: заголовок, подзаголовок, вопрос и ответ.

Все это строка, за исключением поля ответа, которое является целым числом для флажка.

Я не совсем уверен, какую страницу RESTful следует начинать после этого. Мне нужен заголовок, отображаемый следующим образом (в представлении), но редактируемый/отправляемый через флажок на одной странице.

Это представление должно ОТОБРАЖАТЬ контрольный список и ИЗМЕНИТЬ контрольный список одновременно. Менеджер должен иметь возможность добавлять новые заголовки, подзаголовки и вопросы, которые затем могут ответить техническим специалистам.

<% @checklists.each do |checklist| %> 
<h1> <%=h checklist.header %> </h1> 
<h3> <%=h checklist.subheader %> </h3> 
<ul> 
    <li> 
    <%=h checklist.question %> 
    <% form_for @checklists do |f| %> 
    <%= f.check_box("checklist", "answer") %> 
    <% end %> 
    </li> 
</ul> 
<% end %> 

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

+0

Я забыл добавить тег submit, но он есть. Есть идеи? –

ответ

2

Если вы хотите, чтобы менеджер обновил/изменил флажки и техников заполнить формы, вам понадобится несколько дополнительных таблиц. Один из них содержит вопросы и один, содержащий значения, которые проверяются. Кроме того, кажется, что лучше разделить контроллер на два, по одному на каждый пользовательский тип:

Для части менеджера вы можете просто сделать контроллер, как любой другой контроллер: используя действие индекса, чтобы показать все вопросы и изменить/update/etc для их изменения.

Для части специалиста вам необходимо определить таблицу проекта, содержащую некоторую информацию о проекте, над которым работает техник. И таблица checkboxes, содержащая project_id и checkbox_ids, чтобы связать флажки с определенным проектом.

Дополнительную информацию о создании ассоциаций между таблицами см. В разделе A Guide to Active Record Associations.

+0

Спасибо за ответ Вегар. Я пытаюсь обернуть голову вокруг has_many: через отношения в течение некоторого времени. Я знаю, как их выполнять, но мне трудно понять, как получить доступ к ним через разные контроллеры/представления и т. Д. Во многих учебниках показано, как связать их в моделях, но не в представлениях/контроллерах. Я успешно выполнил отношения has_many_belongs_to, которые, как мне кажется, создают для меня XXX_ids, но, конечно, не позволяют добавить дополнительную информацию в отношения. Я буду мешать в Аптане, чтобы понять, могу ли я это понять. –

+0

Я тоже обновил поток. Просто чтобы убедиться, что мы на одной странице. –

+0

Вам не нужно создавать контроллер для каждой модели. Вам нужны контроллеры для страниц, которые вы хотите показать. Так что один для менеджеров и один для техников. Соотношения автоматически выбираются при извлечении базовой записи с использованием автоматически добавленных полей (ов) идентификатора. – Veger

-1

Не смотря на это, я готов поспорить, что вы хотите form_for checklist.question и POST для вопросов_контроллера, который будет использовать действие #update.

+0

Это только контрольный контроллер, который существует. Таким образом, я бы поставил эту выше информацию на страницу индекса, а затем у вас возникла функция form_for action POST для обновления? Я просто использую: method => POST на теге form_for? Как мне заставить его обновлять себя при нажатии кнопки form_for submit? –

+0

Ваш ответ, похоже, совсем не помогает ... По крайней мере, я действительно не понимаю, что вы говорите. – Veger

+0

Я ценю ваш отзыв scott, даже если это не то, что мне нужно. –

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