基本的には、アプリのようなGoogleのフォームを作っています。基本的な構造は、一度ログインしたフォームを作成できるユーザーで構成され、各フォームには複数の質問があり、複数回答。異なるビューのRuby on Railsネストされたフォーム
私がやっていることは、フォームが作成されると、そのフォームが含む(その部分は既に実装されている)質問を作成し、各フォームの表示ビュー(フォームに答えるために登録する必要はありません)回答モデルのフォームが含まれていて、それぞれの質問の回答ごとにフィールドが含まれています。
これは私がこれまで行ってきたことです。
ROUTES
devise_for :users
root 'forms#index'
resources :forms
post 'forms/new'
形状モデル
class Form < ActiveRecord::Base
has_many :questions, dependent: :destroy
belongs_to :user
accepts_nested_attributes_for :questions, :reject_if => lambda { |a| a[:body].blank? }
end
QUESTIONモデル
class Question < ActiveRecord::Base
belongs_to :form
has_many :answers
accepts_nested_attributes_for :answers, :allow_destroy => true, :reject_if => lambda { |a| a[:body].blank? }
end
アンサーモデル
class Answer < ActiveRecord::Base
belongs_to :question
end
私がネストされた属性を使用していSINCE 210
、私はFORMのCONTROLLER
class FormsController < ApplicationController
before_action :authenticate_user!, only: [:index]
def index
@forms = Form.all
end
def new
numberOfQuestions = 0
if params[:numberOfQuestions]
numberOfQuestions = params[:numberOfQuestions].to_i
end
@form = Form.new
numberOfQuestions.times { @form.questions.build }
end
def create
@form = Form.new(form_params)
@form.user = current_user
if @form.save
redirect_to root_path, notice: "Form correctly created"
else
render :new, notice: "Form submition failled"
end
end
def show
@form = Form.find(params[:id])
questionsId = @form.questions.collect(&:id)
numberOfAnswers = questionsId.size
(0..numberOfAnswers-1).each do |i|
question = Question.find(questionsId[i])
question.answers.build
end
end
def destroy
@form = Form.find(params[:id]).destroy
redirect_to root_path
end
private
def form_params
params.require(:form).permit(:title, :user_id, questions_attributes: [ :body, :id, :form_id, answers_attributes: [ :body, :id, :question_id]])
end
end
からすべて管理しています、これは私がフォームの各質問に答えるためのフォームを表示する図であるが、私は「WHEREトラブルがあります。私のコードがある時点で
<div class="container">
<div class="row">
<div class="col-sm-12">
<h1><%= @form.title %></h1>
<ol>
<% @form.questions.each do |question| %>
<li><%= question.body %></li>
<% end %>
</ol>
<%= form_for @form do |f| %>
<%= f.fields_for :questions do |builder| %>
<% builder.fields_for :answers do |ansBuilder| %>
<div class="form-group">
<%= ansBuilder.text_field :body, class: "form-control", placeholder: "Answer the question" %>
</div>
<% end %>
<% end %>
<div class="form-group">
<%= f.submit class: "btn btn-primary", value: "Send Answer" %>
</div>
<% end %>
</div>
</div>
</div>
、私はそれが(./forms/1で例えば)各フォームを表示パスに対応するフォームの質問のそれぞれのフィールドを表示するように期待していました、 Answerモデルのフォームは表示されません。あなたが何か他のものをチェックアウトしたい場合には
これは、レポのリンクです:読書のためのhttps://github.com/sebasdeldi/Formularia
おかげで多くのことを。
助けてくれてありがとうございますが、あなたが提案した変更には何も起こりませんでした。 –