0

私はこのようなフォームを持っています:

新しい質問

コンテンツなしでフォームを送信すると、エラーが表示されます:

エラー 新しい質問

ラジオボタンがなくなった!

これは私のフォームビューにあります:

<%= simple_form_for @question, defaults: { error: false } do |q| %>

  <legend>Question</legend>
  <%= render "shared/error_messages", object: q.object %>

  <%= q.input :content, input_html: { rows: 3, class: 'span6' } %>
  <%= q.input :mark, input_html: { class: 'span1' } %>
  <%= q.association :topic %>
  <%= q.association :question_type %>

  <%= q.simple_fields_for :answers do |a| %>
    <%= a.input :correct, collection: [[true, 'True'], [false, 'False']],
                                                            as: :radio_buttons,
                                                            label: 'Answer',
                                                            value_method: :first,
                                                            label_method: :last,
                                                            item_wrapper_class: 'inline'
                                                            %>
  <% end %>
<% end %>  

私が逃したか間違っているのは何ですか?render 'new'@question.save が false の場合、質問コントローラーの作成アクションで使用しました。これは私の質問コントローラーです:

class QuestionsController < ApplicationController
  def new
    @question = Question.new
    @question.answers.build
  end

  def create
    @question = Question.new(content: params[:question][:content])
    @question.mark = params[:question][:mark]
    @question.topic_id = params[:question][:topic_id]
    @question.question_type_id = params[:question][:question_type_id]
    @question.user_id = current_user.id

    if @question.save
      if params[:question][:answers_attributes]['0'][:correct] == 'true'
        answer = @question.answers.build(content: 'True')
        answer.correct = true
      else
        answer = @question.answers.build(content: 'False')
      end
      if @question.save
        flash[:success] = "Successfully created new question."
        redirect_to root_url
      else
        render 'new'
      end
    else
      render 'new'
    end
end
4

2 に答える 2

2

おそらくメソッドで、コントローラーのオブジェクトにメソッド(または他の方法)を使用して新しいanswerものを構築していると思います。build_answer@questionnew

createアクションが失敗すると、 に@questionは何も表示されずanswerssimple_fields_forには何も表示されません。

詳細が必要な場合は、コントローラーのコードを投稿してください。問題を解決する方法を見つけようとします。

編集:質問を作成する方法が間違っています。

@question = Question.new(params[:question])

その後、あなた@questionは答えを持ち、あなたの見解ではすべてがうまくいくでしょう;)

于 2012-10-28T15:05:25.647 に答える
0

最後の render 'new' の上に @question.answers.build を追加しました。

于 2012-10-30T06:23:56.803 に答える