I’m trying to grade a quiz application I would like to make. I have a questions model with and ask(the actual question), 4 choices(a-d), and a correct answer(string).
In the view I have the 4 question being diplayed then the correct answer choice (This is just a test for functionality) and then I created a text_field to accept the users answer choice and a button to refresh the index action which has the scoring logic, for now..
–Do I need to put the text_field within a form_tag?
<p>1. <%= h @question.q1 %></p>
<p>2. <%= h @question.q2 %></p>
<p>3. <%= h @question.q3 %></p>
<p>4. <%= h @question.q4 %></p>
<p>Answer: <%= h @question.correct %></p>
<%= text_field_tag :choice, params[:choice] %>
<%= button_to "Grade", {:controller => 'site', :action => "index"} %>
<p> <%= @answer %></p>
Heres the index controller action
def index
@question = Question.find(1)
if @question.correct == params[:choice]
@answer = 'right'
else
@answer = 'wrong'
end
end
Its not really working. The textfield is supposed to take a letter choice like ‘a’ or ‘c’ and compare it with the correct answer in the database.
I would love this to work by radiobuttons, but I’m a newbie to rails so I thought I’d take baby steps.
So if anyone can help me with how to fix this by string, or preferably by radiobuttons, I’d really appreciate it.
Here’s how I would do it:
It will require a named route in your
config/routes.rbfile:and then, in
app/views/index.html.erb:I could give you much more specific assistance if you’d provide your routes.rb file as well as the rest of your controller code. The above answer is not RESTful at all. If that is at all important to you, the routes configuration would be different, as well as the controller code. Also, with RESTful design, you could use a
form_formethod call in your view, which is more standard these days.