0

ユーザーが正しい答えを数字フィールドに入力できるクイズ アプリケーションを構築しています。このフィールドの値を button_to メソッドのパラメーターとして使用して、新しい回答を作成したいと考えています。ボタンをクリックすると、最初の 2 つのパラメーターを属性として使用して新しい回答が作成されますが、指定された回答の属性は空です。エラーは発生しません。指定されたanswerパラメーターが属性として設定されていないだけです。

フィールドの値を取得してパラメータとして使用するにはどうすればよいですか? ヘルパーを使うべきですか?(私はレールに不慣れで、まだヘルパーを利用していません)。

質問コントローラー

class QuestionsController < ApplicationController

  def showquestion
    @question = Question.find(params[:id]) 
  end

  # . . .

質問を表示

views/questions/showquestion/1
    <b>Question:</b>
    <%=h @question.word %>
<b>1:</b>
<%=h @question.ans1 %>

<b>2:</b>
<%=h @question.ans2 %>

<b>The correct answer is number: </b>
<%=number_field :givenanswer, params[:givenanswer]%>

<%= button_to 'add answer', {:controller => "answers", :action => "create", 
                :question_id => @question.id, :questionfinished => Time.now, :givenanswer => params[:givenanswer] }  %>

アンサーコントローラー

class AnswersController < ApplicationController
  before_action :set_answer, only: [:show, :edit, :update, :destroy]

  # POST /answers
  # POST /answers.json
  def create
  question =Question.find(params[:question_id])
  questionfinished = params[:questionfinished]
  givenanswer = params[:givenanswer]
   @answer = Answer.new(question: question, questionfinished: questionfinished, givenanswer: givenanswer)

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

更新:フォームで使用しようとしましたが、うまくいくように見えました:今、Answer オブジェクトの属性 givenanswer を持っています。ただし、フォームに挿入する数値に関係なく、常に 0 が格納されます。

 <%= form_tag(:controller => "answers", :action => "create", :question_id => @question.id, :questionfinished => Time.now, :givenanswer => :givenanswer) do %>
   <p>
    <b>Het juiste antwoord is nummer: </b>
    <%=number_field :givenanswer, params[:givenanswer]%>
   </p>

   <p><%= submit_tag("voegantwoordtoemetformtag")%></P>
<% end %>
4

1 に答える 1

0

これにはフォームを使用する方がよいと思いますが、本当に必要な場合は、javascript を使用して値を動的に変更できます。

于 2014-04-23T13:19:02.443 に答える