2

Я хочу, чтобы создать форму после этой идеи:Rails - Вложенные формы - 2 уровня

  • Я модели Назначения, активность, задачи, AssignmentActivity, ActivityTask и AssignmentActivityTask
  • -присваивание имеет много видов деятельности и 1 деятельность имеет много задач

    • (есть много-ко-многим между:
      • AssignmentActivity
      • AssignmentActivity - Задача,
    • и один-ко-многим:
      • Активность - Задание)

Я сделал Форма присвоения-деятельности с использованием этой идеи: http://railscasts.com/episodes/17-habtm-checkboxes

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

_form.html.erb

<% form_for @assignment do |f|%> 
    <% Activity.all.each do |a|%> 
    <% check_box_tag "assignment[activity_ids][]", a.id, @assignment.activity_ids.include?(a.id)%> | <% a.name%> 
    <%end%> 
<%end%> 

Так что сохраняет внутри задания, все мероприятия, которые я проверил.

Проблема возникает, когда я попытался добавить возможность сохранения задачи внутри этой формы. Это то, что я пытался

_form.html.erb

<% form_for @assignment do |f|%> 
    <% Activity.all.each do |a|%> 
    <%= check_box_tag "assignment[activity_ids][]", a.id, @assignment.activity_ids.include?(a.id)%> | <% a.name%> <br> 
    <% a.tasks.each do |t|%> 
     #THIS 
     <% check_box_tag "assignment[activity_ids][][]", t.id, "Something here"%><br> 
    <%end%> 
    <%end%> 
<%end%> 

Но я не знаю, как написать строку после комментария.

Так что, когда он сохраняет его следует сохранить в уступке деятельности, а также задачи

Есть ли способ сделать это?

Заранее спасибо

Хавьер QQ

ответ

0

Вы можете попытаться передать идентификатор назначения в качестве параметров, так и использовать вспомогательный метод для сохранения объектов в нескольких моделях. В ActionView :: Helpers API у вас есть что-то вроде этого:

check_box(object_name, method, options = {}, checked_value = "1", unchecked_value = "0") 

Так, может быть, попробовать что-то подобное в вашем блоке кода:

<% check_box_tag "assignment[activity_ids][][]", propagate(t.id)%> 

И в вашем AssignmentHelper.rb, попробуйте реализовать метод

def propagate(id) 
    *Fetch the id of Activity 
    *Fetch the id of Task 
    *Save both objects 
end 

Надеюсь, что это поможет.

+0

Есть ли какая-либо документация или его примеры? Спасибо – JavierQQ23

+0

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html В документе есть сеанс, называемый «Примеры вложенных атрибутов», и вместо вызова метода «Помощник» вы можете использовать блок кода внутри, что может сделать работу. –

+0

Я имею в виду про распространение, потому что это то, что я не понимаю :) – JavierQQ23

0

Я бы порекомендовал nested_forms от ryanb. Это позаботится о том, что вы хотите делать очень хорошо и очень быстро.

0

Вам не нужно использовать какие-либо внешние библиотеки, потому что Rails обрабатывает вложенные формы просто отлично.

Станьте удобными с использованием fields_for и ваши проблемы будут отсортированы.

+0

вот в чем проблема ... если положить в первую форму поля_for ничего показать вверх – JavierQQ23

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