2015-07-10 3 views
0

я делаю проект, где а «задачи has_many проекта, и задача TASK1, task1 имеет задачу 2 и task2 имеет Task3.»RoR: Вложенные формы модели атрибуты внутри других атрибутов модели

Но им застрял в принятии способ вставить все эти задачи только в одной форме,

им с помощью вложенной формы камень,

Это то, что я thought'd работу.

def task_params 
    params.require(:task).permit(:projeto_id, :raiz, :descr, :hour, :typo, :tsk1s_attributes => [:raiz, :descr, :hour, :typo, :_destroy, :tsk2s_attributes => [:raiz, :descr, :hour, :typo, :_destroy, :tsk3s_attributes => [:raiz, :descr, :hour, :typo, :_destroy]]]) 
end 

task.erb модель

class Task < ActiveRecord::Base 
has_many :tsk1s 
    belongs_to :projeto 
    accepts_nested_attributes_for :tsk1s, allow_destroy: true 
end 

tsk1.erb модель

class Tsk1 < ActiveRecord::Base 
belongs_to :task 
    has_many :tsk2s 
    accepts_nested_attributes_for :tsk2s, allow_destroy: true 
end 

же для tsk2.erb, tsk3 только belongs_to

часть моей формы сильфона, это для добавления tsk2, tsk3 - это то же самое и tsk1 тоже.

<%= f.fields_for :tsk2s do |tsk2| %> 
    <ul class="step"> 
    <li> 
    <%= tsk2.number_field :raiz, :placeholder => "Identificador" %> 
    <%= tsk2.text_field :descr, :placeholder => "Descrição" %> 
    <%= tsk2.number_field :hour, :placeholder => "Carga Horária" %> 
    <%= tsk2.select("typo", {"Analitica" => "Analitica", "Sintetica" => "Sintetica"}) %> 
    <%= tsk2.link_to_remove "-" %> 
    <%= f.link_to_add "+Galho", :tsk3s %> </li> 
    <% end %> 

Это на самом деле только сохраняет задачу и TSK1 атрибуты,

контроллер задачи:

def create 
@task = Task.new(task_params) 

respond_to do |format| 
    if @task.save 
    format.html { redirect_to @task, notice: 'Task was successfully created.' } 
    format.json { render :show, status: :created, location: @task } 
    else 
    format.html { render :new } 
    format.json { render json: @task.errors, status: :unprocessable_entity } 
    end 
end 

конец

def new 
@task = Task.new 

конец

полный код формы http://pastebin.com/DSwZGfNs

+0

Пожалуйста, обновите ваш пост с '' new' и create' методов контроллера. А также с полным кодом формы. – Pavan

ответ

0

Одной из причин может быть в вашем коде формы, :tsk2s, :tsk3s вложены в задачах но согласно коде модели, :tsk2s должны быть вложены в :tsk1s и :tsk3s должны быть вложены в :tsk2s.

Изменение формы соответственно, как показано ниже

<%= f.fields_for :tsk1s do |tsk1| %> 

    <ul> 
    <li> 
    <%= tsk1.number_field :raiz, :placeholder => "Identificador" %> 
    <%= tsk1.text_field :descr, :placeholder => "Descrição" %> 
    <%= tsk1.number_field :hour , :placeholder => "Carga Horária" %> 
    <%= tsk1.select("typo", {"Analitica" => "Analitica", "Sintetica" => "Sintetica"}) %> 
    <%= f.link_to_add "+Ramo", :tsk2s %> 
    <%= tsk1.link_to_remove "-" %> </li> 

    <%= tsk1.fields_for :tsk2s do |tsk2| %> 

    <ul class="step"> 
    <li> 
    <%= tsk2.number_field :raiz, :placeholder => "Identificador" %> 
    <%= tsk2.text_field :descr, :placeholder => "Descrição" %> 
    <%= tsk2.number_field :hour, :placeholder => "Carga Horária" %> 
    <%= tsk2.select("typo", {"Analitica" => "Analitica", "Sintetica" => "Sintetica"}) %> 
    <%= tsk2.link_to_remove "-" %> 
    <%= f.link_to_add "+Galho", :tsk3s %> </li> 

    <%= tsk2.fields_for :tsk3s do |tsk3| %> 

    <ul> 
    <li> 

    <%= tsk3.number_field :raiz, :placeholder => "Identificador" %> 
    <%= tsk3.text_field :descr, :placeholder => "Descrição" %> 
    <%= tsk3.number_field :hour, :placeholder => "Carga Horária" %> 
    <%= tsk3.select("typo", {"Analitica" => "Analitica", "Sintetica" => "Sintetica"}) %> 
    <%= tsk3.link_to_remove "-" %> </li> 
    </ul> 
    </ul> 
    </ul> 
    <% end %> 
    <% end %> 
    <% end &> 
    </ul> 
    </ul> 
    <br> 
    <%= f.link_to_add "+Raiz", :tsk1s %> <br> <br> <br> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
    <% end %> 
+0

Получил эту ошибку, Неперечисленные параметры: 1436559009615, new_tsk1s "task" => {"projeto_id" => "1", "raiz" => "1", "descr" => "asd", "hour" = > "33", "typo" => "Analitica", "tsk1s_attributes" => {"1436559009615" => {"raiz" => "2", "descr" => "gf", "hour" => " 5 "," typo "=>" Analitica "," _destroy "=>" false "}," new_tsk1s "=> {" tsk2s_attributes "=> {" 1436559010833 "=> {" raiz "=>" 3 "," descr "=>" h "," hour "=>" 5 "," typo "=>" Analitica "," _destroy "=>" false "}," new_tsk2s "=> {" tsk3s_attributes "=> {" 1436559011808 "=> {" raiz "=>" 4 "," descr "=>" b "," hour "=>" 5 "," typo "=>" Analitica "," _destroy "=>" false "}} }}}}}, "commit" => "Создать задачу"} –

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