2010-05-26 4 views
0

Я пытаюсь оценить приложение для викторины, которое я хотел бы сделать. У меня есть модель вопросов и запрос (фактический вопрос), 4 варианта (a-d) и правильный ответ (строка).Rails - Помогите оценить онлайн-опрос в RoR

В представлении у меня есть вопрос 4, который будет дублироваться, а затем правильный выбор ответа (это просто тест на функциональность), а затем я создал текстовое поле, чтобы принять выбор ответа пользователей и кнопку, чтобы обновить действие индекса, которое логика подсчета очков, на данный момент ..

- Мне нужно поместить текстовое поле в 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 контроллер индекса действия

def index 
     @question = Question.find(1) 
     if @question.correct == params[:choice] 
      @answer = 'right' 
     else 
       @answer = 'wrong' 
     end 
end 

Его на самом деле не работают. Предполагается, что текстовое поле должно выбрать букву «a» или «c» и сравнить ее с правильным ответом в базе данных.

Мне бы это понравилось работать с помощью радиолюбителей, но я новичок в рельсах, поэтому я думал, что возьму детские шаги.

Так что, если кто-нибудь может помочь мне в том, как исправить это строкой, или, желательно, с помощью радиолюбителей, я бы очень признателен.

ответ

2

Вот как я бы это сделать:

# in app/controller/QuestionsController 
def index 
    @question = Question.find(1) 
    @grade = params[:choice] == @question.answer ? 'PASS' : 'FAIL' 
end 

Это потребует именованного маршрут в вашем config/routes.rb файле:

map.questions 'questions', :controller => 'questions', :action => 'index' 

, а затем, в app/views/index.html.erb:

<h2><%=h @question.question_text %></h2> 

<ol> 
    <li><%=h @question.q1 %></li> 
    <li><%=h @question.q2 %></li> 
    <li><%=h @question.q3 %></li> 
    <li><%=h @question.q4 %></li> 
</ol> 

<p> 
    Correct answer <%=h @question.correct %> 
</p> 

<% form_tag do %> 
    <p>Choice? <%= text_field_tag :choice %></p> 
    <%= submit_tag 'Grade' %> 
<% end %> 

<p>Grade: <%= @grade %></p> 

I может дать вам гораздо более конкретную помощь, если вы также предоставите файл routes.rb как остальная часть вашего кода контроллера. Вышеприведенный ответ не является RESTful вообще. Если это для вас вообще важно, конфигурация маршрутов будет отличаться, а также код контроллера. Кроме того, с дизайном RESTful вы можете использовать вызов метода form_for в вашем представлении, что является более стандартным в наши дни.

0

В настоящий момент ваш код будет игнорировать введенный текст. Ввод пользователя должен быть либо опубликован (через форму & submit), либо через get (также может быть выполнен с формой).

В этом случае я бы предложил вам поместить его в тег формы и добавить кнопку отправки. Добавьте необходимые действия к контроллеру (save В этом случае я верю), проверьте данные, а затем визуализируйте действие индекса.

Смежные вопросы