2014-01-29 3 views
0

Получил ответ в комментариях в указанном первом ответе, это все время проверялось, мне просто нужно было добавить вспышку к представлению.Ruby Quiz setup

Как я могу изменить этот код, чтобы убедиться, что ответ верен?

Я после этого учебника http://quizzsystem.comyr.com/web-page/

  • ошибки я получаю сейчас, когда после нажатия кнопки отправить ответ «нет маршрута матчей [POST]„/ quizzs/регистрацию/1“- так это выглядит, как это не проверяя ответ и перенаправляет, но только поиск другой странице под названием «проверить», чтобы отобразить.

, что он должен сделать, это запустить проверку (/quizzs_controller.rb) на ответ, чтобы проверить, если это правильно или не

/quizzs_controller.rb

class QuizzsController < ApplicationController 
    before_action :set_quizz, only: [:show, :edit, :update, :destroy] 
    before_filter :authenticate, :except=>[:home, :answering, :answer, :check] 

... 

def check 
    @quizz = Quizz.find(params[:id]) 
    respond_to do |format| 
    if params[:ans][0][email protected] 
     flash[:notice] = "<b>Congratulation. You gave the correct answer to the question: " + @quizz.question + "</b>" 
     format.html { redirect_to({:controller => "quizzs", :action => "answering",:id=>"1" }) } 
     format.xml { head :ok } 
    else 
     flash[:notice] = "<b p style='color: red'>I am sorry but that is not the right answer to the question: " + @quizz.question + "</b>" 
     format.html { redirect_to({:controller => "quizzs", :action => "answering",:id=>"1" }) } 
     format.xml { head :ok } 
    end 
    end 
end 

... 

Так что, когда вы нажмете кнопку в окне ниже он работает «проверить», чтобы проверить ответ, отобразит соответствующее сообщение на странице перенаправляет к которому /answering.html.erb ,

/answer.html.erb

* Я добавил знак «=» перед тем form_tag, что единственное изменение от исходного кода (если не опечатка, я до сих пор не поймали)

... 


    <%= form_tag(:action => "check",:id => @quizz.id) do %> 
<p> 
    <b>The correct answer is number: </b> 
    <%= text_field :ans,params[:ans]%> 
</p> 

<p><%= submit_tag("check")%></P> 

    <%end%> 

<%= link_to 'Back', {:controller => "quizzs", :action => "answering",:id=>"1" } %> 

... 

оказывают на эту страницу и отобразить сообщение

/answering.html.erb

<h2>Which question do you want to answer</h2> 
<table> 
<tr> 
    <th>Question</th> 
</tr> 
<%@quizzs.each do |quizz|%> 
<tr> 
    <td><%=h quizz.question %></td> 
    <td><%= link_to '<> Answer this', :controller => "quizzs", :action => "answer", :id =>quizz.id%></td> 
</tr> 
<%end%> 
</table> 
<br /> 

Но вместо этого происходит поиск маршрута под названием «проверка» вместо проверки правильности вопроса.

Надеюсь, это лучшая презентация моего вопроса, я все еще новичок в этом.

+0

Я хотел бы помочь вам, если вы просто сузили свой вопрос и соответствующий код/​​ошибки. Помощь с вопросами начинающего, как правило, быстрая и тщательная, пока вы не выбиваете нас со стенами текста и огромными многочастными вопросами. Заранее спасибо. – toolz

+0

сожалею о том, что я попытался сузить фокус, чтобы быть более конкретным, надеюсь, что здесь лучше представленный вопрос. –

ответ

1

ресурсы: quizzs будет генерировать только маршруты для Create/Read/Update/Destroy действия. Для любых пользовательских действий в контроллере в файл routes.rb необходимо добавить новую запись маршрута. один из способов сделать это - объявить новое действие под блоком ресурсов следующим образом.

resources :quizzs do 
    member do 
    patch 'check' 
    end 
end 

Если запустить rake routes из вашей оболочки, вы должны увидеть строку, которая будет иметь quizzs # чек.Любой маршрут, который отсутствует в выводе rake routes, не известен Rails.

Надеюсь, это поможет решить проблему и поможет вам понять, как работает маршрутизация.

+0

спасибо за ваше время и ответ Мистер Кандала, я прошу прощения, я не могу сформулировать свой вопрос лучше, насколько я могу судить, проверка не должна быть другой страницей, это должно быть действие, которое выполняется на ответ, чтобы проверить правильность или неправильно, поэтому вместо того, чтобы быть маршрутом, он должен быть действием (не уверен, что этот термин верен), а в учебнике я следил за этим, но когда я пытался воссоздать его, а не проверять ответ, он пытается перенаправить на страницу, которая не существует (и, насколько я могу судить, из учебника никогда не создавалась). Еще раз спасибо за ваше время. –

+0

Кроме того, я попытался ввести этот код, но он не подтвердил ответ, который он по-прежнему указал на страницу проверки. –

+0

@RockwellRice, когда вы говорите, что он все еще указывает на страницу проверки. Ошибка аналогична («Нет совпадений маршрутов ...») – rlecaro2

0

Ваше действие «проверка» не направлено. Ниже resources :quizzs добавить

patch 'quizzs/check/:id.:format' to: 'quizzs#check' #this names might be different 

Надеюсь, это решит вашу проблему.

PD: Вы всегда можете использовать rake routes в своем терминале, чтобы проверить маршруты, которые вы определили, и их методы.

GL & HF.

+0

нет, что не изменило ошибку –

+0

Затем добавьте этот маршрут в дополнение к «получает» у вас. Я здесь слепой, поскольку это не моя развивающая машина. – rlecaro2

+0

Прошу прощения, пропущенный маршрут для викторин. Я отредактирую. – rlecaro2