私は現在、ユーザーに質問を表示するビューを作成しようとしています。質問に正しく答えた場合、ユーザーはチェックボックスをオンにして、データベース。言い換えれば、私たちはどの質問がデータベースでユーザによって正しく答えられたかを把握しています。 私の問題は、RoRとフロントエンドの初心者の方が一般的ですが、チェックボックス(フォーム)を質問の中に挿入する方法がわかりません。 私はレール4を使用しています。 ありがとう!Ruby on Rails 4、ビュー内にフォームを作成
-1
A
答えて
0
すべての回答にブール値を追加し始めます。
$ rails g migration AddCorrectToAnswers
今その移行は今、私たちは今、あなたは新しいルート
を持つべきである答えに正しい# 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
をマークする新しいルートを作成することができます
class AddCorrectToAnswers < ActiveRecord::Migration[5.0]
def change
add_column :answers, :correct, :boolean, default: false
end
end
のようになります。
question_answer_correct /questions/:question_id/answers/:answer_id/correct(.:format) answers#correct
私はassuminです答えは質問であるgはあなたのショーのページになりましページ
を表示します
このような# 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 %>
何かを行うことができます今、あなたがしなければならない最後の事は正しいと呼ば答えコントローラのメソッドを作成することです私はこれがハッピー
が
をコーディングすることができますことを願っています# 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
として正しい答えをマークします
0
あなたが提出したり、何もあなたが今、あなたは答えを明らかにすることができ、このボタンのイベントリスナーを書くことができます
<button class="check">Click me</button>
をdiplayしたいと言う一つのボタンを追加することができ、あなたはすでにフォームを設定していると仮定すると、ユーザーが指定した回答と一致する場合は、ファイアとAjaxがバックエンドに電話し、必要なものを保存します。
のコード例は:
$('.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');
}
});
は、おおまかには、このように動作するはずですが、将来の安全保障からやるべきことがたくさんがあります。例:すべての回答を表示することはできません。回答が提出されたら、バックエンド検証を行う必要があります(実際に正しいかどうか、誰かがハックしようとしたかどうかを確認する必要があります)。
+0
この後、バックエンドのものについては別の回答を使用することができます。 – Abhinay
関連する問題
- 1. フォームを作成する(Ruby on Rails)
- 2. ruby on rails 4
- 3. Ticketee Ruby on Rails 4
- 4. Ruby on Railsのフォーム
- 5. Ruby on Rails、メソッドの作成
- 6. Ruby on Railsフォームに数字列を作成する方法
- 7. Ruby on Railsでのストレステスト4
- 8. ruby on rails and bootstrap 4
- 9. Heroku Deploy - アプリケーションエラー(Ruby On Rails 4)
- 10. ruby on railsでのビュー
- 11. Ruby on railsコントローラとビュー
- 12. Ruby on Railsでネストされたフォームを作成
- 13. Ruby on rails 4 check_box_tagがフォームに表示されない
- 14. Ruby on Rails:フォームの選択
- 15. Ruby on Rails(フォーム提出)
- 16. Ruby on Railsでのフォーム
- 17. Ruby on Railsのカスタムフィールド/フォーム
- 18. Ruby on rails - フォームが作成されていない
- 19. Ruby on RailsでWistiaモデルを作成
- 20. Ruby on Rails - 関係表を作成
- 21. Ruby on Railsでビジネスディレクトリを作成
- 22. Ruby on Railsでリマインダー関数を作成
- 23. ランダムファイルを作成するRuby on Rails 3
- 24. Ruby on Railsのテキストフィールドを作成する
- 25. ビュー内のRuby-on-Rails変数を動的に変更する
- 26. Ruby on Rails - 別のクラス内のデータベーステーブルを作成
- 27. Ruby On Rails Application.html.haml
- 28. 異なるビューのRuby on Railsネストされたフォーム
- 29. のRuby on Railsのv5.1.3作成テスト
- 30. Ruby on Railsルートエラー?
おそらくチェックボックスのように、ボタンのような要素は仕事をします...言い換えれば、別のフォーム要素やフォームを含める必要はありません。あなたは複数の選択肢の質問について話していますか?あなたの質問に小さな例で答えてください。 – Abhinay
コードスニペットやユースケースのような詳細を追加してください。正しい方法で考えているかどうかは分かりません。ここで何かをしたいとは思わないでください。 – Abhinay
@Abhinayあなたはボタンについて正しいかもしれません...いいえ、多肢選択式の質問、質問のためのテキストフィールド、およびユーザーが望むときにクリックすると、別のテキストフィールドに回答が表示されます。質問が正しい場合は、その質問を記録し、データベースの真偽値をtrueに設定して、どの質問が正しく答えられたかを知る方法が必要です。 – Sam