В настоящее время я пытаюсь создать действительно простое вложенное приложение формы в своем стремлении изучить рельсы. В этом приложении у меня есть три модели: legal_form
answer
и question
. У меня есть мой answers.html.erb, настроить следующим образом:«param отсутствует или значение пусто» в вложенной форме
<%= form_for (@legal_form) do |f| %>
<h1>Title <%= @legal_form.title %></h1>
<p><%= @legal_form.description %></p>
<ul>
<% @legal_form.questions.each do |question| %>
<%= fields_for question.answers.build do |q| %>
<li>
<%= question.question_content %>
<%= q.text_field :answer_content %>
</li>
<% end =%>
<% end %>
</ul>
<p><%= f.submit "Submit" %></p>
<% end %>
который в настоящее время хватает на три вопроса, я сохранные и делает ввода текста флажки рядом с ними; работает без проблем. Однако, когда я отправляю значения, я получаю «параметр отсутствует или пуст: legal_form».
Я полагаю, что это, скорее всего, связано с моей сильной настройкой параметров в контроллере legal_forms, см. Ниже.
class LegalFormsController < ApplicationController
before_action :find_legal_form, only: [:show, :edit, :update, :destroy, :answers]
def index
@legal_form = LegalForm.all.order("created_at DESC")
end
def show
end
def new
@legal_form=LegalForm.new
end
def create
@legal_form = LegalForm.new(legal_form_params)
if @legal_form.save
redirect_to @legal_form, notice: "Successfully created new legal form."
else
render 'new'
end
end
def edit
end
def update
if @legal_form.update(legal_form_params)
redirect_to @legal_form
else
render 'edit'
end
end
def destroy
@legal_form.destroy
redirect_to root_path, notice: "Successfully deleted form"
end
def answers
@[email protected]_form.questions
@legal_form=LegalForm.find(params[:id])
end
private
def legal_form_params
params.reqire(:legal_form).permit(:title, :description, :questions_attribute => [:id, :question_number, :question_content, :_destroy, :answer_attributes => [:id, :answer_content, :question_id, :user_id]])
end
def find_legal_form
@legal_form=LegalForm.find(params[:id])
end
end
И, в случае, если это полезно, вот модели для каждого.
class Answer < ActiveRecord::Base
belongs_to :question
end
class LegalForm < ActiveRecord::Base
has_many :questions, :dependent => :destroy
has_many :answers, through: :entity_roles
accepts_nested_attributes_for :questions,
reject_if: proc { |attributes| attributes['question_content'].blank? },
allow_destroy: true
end
class Question < ActiveRecord::Base
belongs_to :legal_form
has_many :answers
accepts_nested_attributes_for :answers,
reject_if: proc { |attributes| attributes['question_content'].blank? },
allow_destroy: true
end
Кроме того, в соответствии с просьбой вот мой маршруты файл:
Rails.application.routes.draw do
resources :legal_forms do
member do
get 'answers'
end
end
resources :answers
root "legal_forms#index"
end
Любая помощь, чтобы, наконец, победить вложенные формы было бы весьма признателен. Я уже несколько недель ударяю головой об этом. Спасибо заранее.
пожалуйста показать ваш 'routes.rb' работает, и полный' legal_forms' контроллер. –
@ Зелёный Большое спасибо за ответ! Я добавил оба вопроса выше. – neanderslob
Исправьте углубление. которые помогают нам читать этот код. –