Ich versuche derzeit, eine Ansicht zu erstellen, die eine Frage an den Benutzer zeigt, und wenn sie die Frage richtig beantworten, ermöglicht es dem Benutzer, ein Kontrollkästchen zu aktivieren, das eine Anforderung sendet, das zu erhalten die Datenbank. Mit anderen Worten, wir verfolgen, welche Fragen vom Benutzer in der Datenbank richtig beantwortet wurden. Jetzt ist mein Problem, dass (abgesehen davon, dass ich ein kompletter Neuling in RoR und Front-End im Allgemeinen bin), ich nicht weiß, wie Sie das Kontrollkästchen (Formular) in meiner Ansicht zusammen mit der Frage einfügen. Ich benutze Schienen 4. Danke!Ruby on Rails 4, Formular in einer Ansicht
Antwort
Ich würde beginnen, einen booleschen Wert zu allen Antworten hinzuzufügen.
$ rails g migration AddCorrectToAnswers
jetzt sollte, dass die Migration aussehen
class AddCorrectToAnswers < ActiveRecord::Migration[5.0]
def change
add_column :answers, :correct, :boolean, default: false
end
end
jetzt können wir eine neue Route erstellen, die die Antworten richtig darstellen wird
# config/routes.rb
Rails.application.routes.draw do
...
resources :questions do
resources :answers do
match "/correct" => "answers#correct", :as => :correct, via: :all
end
end
...
end
Jetzt sollten Sie eine neue Route
habenquestion_answer_correct /questions/:question_id/answers/:answer_id/correct(.:format) answers#correct
Ich bin Assumin g, die die Antwort in den Fragen zeigen Seite
jetzt in Ihrer Show-Seite so etwas wie dieses
# app/views/questions/show.html.erb
<% @question.answers.each do |answer| %>
<%= answer.answer %>
<%= form_for @user, :url => url_for(:controller => 'answers', :action => 'correct') %>
<%= f.label "Correct Answer" %> <br />
<%= f.check_box :correct %> <br />
....
<%end %>
<% end %>
nun das letzte, was tun können Sie eine Methode in der Antworten Controller korrekt aufgerufen tun müssen, ist erstellen die Antworten als richtig
# app/controllers/answers_controller.rb
class AnswersControlle < ApplicationController
...
def correct
@answer = Answer.find(params[:answer_id])
@answer.correct = true
@answer.save
redirect_to :back
end
end
ich markieren hoffen, dass diese
Glücklich Codierung
hilftAngenommen, Sie bereits Formular-Setup haben,
Sie eine Schaltfläche hinzufügen können, die einreichen oder irgendetwas sagt, Sie
<button class="check">Click me</button>
Jetzt können Sie einen Ereignis-Listener schreiben für diesen Knopf Diplay wollen, die die Antwort offenbaren kann und Wenn es mit der Antwort übereinstimmt, die der Benutzer gegeben hat, dann feuern Sie und Ajax rufen Sie Ihr Backend auf und speichern Sie, was Sie wollen.
Beispielcode:
$('.check').on('click', function(){
var real = $('.reveal-answer').val();
$('.reveal-answer').show(); // you need to protect this part from being abused
var answer = $('.user-input-answer').val(); //Assuming its a input field
var questionId = $('.question').data('question-id');
if(answer === real){
url = '/submit_answer';
data = { question_id: questionId, answer: answer };
$.post(url, data , function() {
}, 'json');
}
});
Grob sollte es so funktionieren, aber es gibt viele Interessenten aus der Sicherheit zu tun. Für Beispiel: Sie können nicht alle Antworten auf der Ansichtsseite haben. Sie sollten die Backend-Validierung durchführen, sobald die Antwort gesendet wurde (um zu überprüfen, ob sie tatsächlich korrekt ist oder jemand versucht hat, sie zu hacken.)
Danach können Sie eine andere Antwort hier für Backend-Materialien geschrieben verwenden. – Abhinay
- 1. Ruby on Rails (Formular senden)
- 2. Ticketee Ruby on Rails 4
- 3. Ruby on Rails 4 select multiple
- 4. Mein Formular erscheint nicht in der Ansicht -Ruby on Rails?
- 5. Einfache Wecker in Ruby on Rails 4
- 6. Stresstest in Ruby on Rails 4
- 7. Zeitumwandlung Ruby on Rails 4 funktioniert nicht
- 8. ruby on rails Architekturmodell, Ansicht und DTOs
- 9. Übergabe einer Variablen an eine Ansicht in Ruby on Rails
- 10. Ruby on Rails rendern in einer Ansicht mit statischen Skriptdateien
- 11. Ruby on rails: Mehrere Controller in einer Ansicht
- 12. unbekanntes Attribut ruby on rails 4
- 13. Ruby On Rails 4 - Serialisierer rief nicht
- 14. Ruby on Rails-Formular mit optionalem Feld
- 15. Ruby on Rails - Nested Devise Formular Validierungen
- 16. Ruby on Rails: Verschachteltes Formular funktioniert nicht
- 17. Erstellen einer sitemap.xml mit Ruby on Rails 4
- 18. Ruby on Rails Authentifizierung
- 19. Rendern einer Ansicht von meinem Ruby on Rails Gem
- 20. Ruby-on-rails-Test beim Aufrufen einer JS-Ansicht "InvalidCrossOriginRequest"
- 21. Ruby on Rails Cache
- 22. Ruby on Rails Formularfehler
- 23. Ruby On Rails Migration
- 24. LocalJumpError (Ruby on Rails)
- 25. Ruby on rails Pfadhelfer
- 26. Curl on Ruby on Rails
- 27. Parsing in Ruby (on Rails)
- 28. Textsuche in Ruby on Rails
- 29. Ruby on Rails AJAX-Fehler
- 30. Patching vollständige Todos in Ruby on Rails 4
Sie brauchen wahrscheinlich keine Checkbox als solche, jedes Element wie Schaltfläche wird den Job erledigen ... mit anderen Worten, Sie müssen kein anderes Formularelement oder Formular hinzufügen. Sprechen Sie über Multiple-Choice-Fragen? beantworte deine Frage unten mit einem kleinen Beispiel. – Abhinay
Bitte fügen Sie weitere Details, wie Code-Snippet und Use-Case .. nicht sicher, ob ich in der richtigen Weise denke .. nicht die Dinge hier übernehmen wollen – Abhinay
@Abhinay könnten Sie Recht über den Button ... Nein, es ist nicht ein Multiple-Choice-Frage, nur ein Textfeld für Fragen und wenn der Benutzer möchte, klicken Sie, um die Antwort in einem anderen Textfeld anzuzeigen.Wenn sie die Frage richtig beantwortet haben, möchte ich einen Weg, dies aufzuzeichnen und den booleschen Wert in der Datenbank auf true setzen, um zu wissen, welche Fragen sie richtig beantwortet haben. – Sam