Rumah > Artikel > pangkalan data > Bagaimana untuk membangunkan sistem soal selidik dalam talian yang mudah menggunakan MySQL dan Ruby on Rails
Cara menggunakan MySQL dan Ruby on Rails untuk membangunkan sistem soal selidik dalam talian yang mudah
Pengenalan:
Dengan kemunculan era digital, soal selidik telah menjadi cara penting untuk mendapatkan maklumat maklum balas pengguna dan penyelidikan pasaran. Artikel ini akan memperkenalkan cara menggunakan pangkalan data MySQL dan rangka kerja Ruby on Rails untuk membangunkan sistem soal selidik dalam talian yang mudah. Melalui kajian artikel ini, pembaca akan belajar cara mereka bentuk model pangkalan data, mencipta dan memindahkan jadual pangkalan data, menyediakan persatuan data dan cara menggunakan Ruby on Rails untuk mencipta, mengisi dan mengumpul statistik pada soal selidik.
1. Reka bentuk pangkalan data
Sebelum bermula, anda perlu mereka bentuk model pangkalan data terlebih dahulu. Artikel ini akan mereka bentuk tiga jadual pangkalan data: Soal Selidik, Soalan dan Jawapan. Antaranya, jadual Soal Selidik digunakan untuk menyimpan maklumat asas soal selidik, jadual Soalan digunakan untuk menyimpan maklumat soalan, dan jadual Jawapan digunakan untuk menyimpan jawapan yang diisi oleh pengguna.
# 创建Questionnaires表 rails generate model Questionnaire title:string description:text # 创建Questions表 rails generate model Question content:text questionnaire:references # 创建Answers表 rails generate model Answer content:text question:references
Selepas menjana fail pemindahan pangkalan data, anda perlu menentukan struktur jadual dalam fail migrasi. Buka setiap fail migrasi dan editnya untuk menambah lajur dan perhubungan yang sepadan.
# 这是Questionnaires表的迁移文件 class CreateQuestionnaires < ActiveRecord::Migration[5.2] def change create_table :questionnaires do |t| t.string :title t.text :description t.timestamps end end end # 这是Questions表的迁移文件 class CreateQuestions < ActiveRecord::Migration[5.2] def change create_table :questions do |t| t.text :content t.references :questionnaire, foreign_key: true t.timestamps end end end # 这是Answers表的迁移文件 class CreateAnswers < ActiveRecord::Migration[5.2] def change create_table :answers do |t| t.text :content t.references :question, foreign_key: true t.timestamps end end end
Pindahkan jadual pangkalan data
rails db:migrate
2. Buat soal selidik
Sebelum membuat soal selidik, anda perlu mencipta model dan pengawal yang sepadan dalam Ruby on Rails. Jalankan arahan berikut:
# 创建Questionnaire模型 rails generate model Questionnaire # 创建Questionnaire控制器 rails generate controller Questionnaires
Edit kod dalam pengawal seperti berikut:
class QuestionnairesController < ApplicationController def index @questionnaires = Questionnaire.all end def show @questionnaire = Questionnaire.find(params[:id]) end def new @questionnaire = Questionnaire.new end def create @questionnaire = Questionnaire.new(questionnaire_params) if @questionnaire.save redirect_to @questionnaire, notice: '问卷创建成功!' else render :new end end # ... private def questionnaire_params params.require(:questionnaire).permit(:title, :description) end end
Dalam fail paparan, mula-mula buat soal selidik baharu:
# app/views/questionnaires/new.html.erb <%= form_with model: @questionnaire, url: questionnaires_path, local: true do |form| %> <%= form.label :title %> <%= form.text_field :title %> <%= form.label :description %> <%= form.text_area :description %> <%= form.submit '创建问卷' %> <% end %>
Kemudian, buat laluan yang sepadan dalam fail penghalaan:
# config/routes.rb Rails.application.routes.draw do resources :questionnaires end
3. Cipta Soalan
sama seperti membuat soal selidik, anda perlu mencipta model Soalan dan pengawal Soalan.
# 创建Question模型 rails generate model Question # 创建Questions控制器 rails generate controller Questions
Kod dalam pengawal edit adalah seperti berikut:
class QuestionsController < ApplicationController def new @question = Question.new end def create @question = Question.new(question_params) if @question.save redirect_to @question.questionnaire, notice: '问题创建成功!' else render :new end end # ... private def question_params params.require(:question).permit(:content, :questionnaire_id) end end
Dalam fail paparan, buat soalan baharu:
# app/views/questions/new.html.erb <%= form_with model: @question, url: questions_path, local: true do |form| %> <%= form.label :content %> <%= form.text_area :content %> <%= form.hidden_field :questionnaire_id, value: @question.questionnaire.id %> <%= form.submit '创建问题' %> <% end %>
Sehubungan itu, tambahkan laluan yang sepadan dalam fail penghalaan:
# config/routes.rb Rails.application.routes.draw do resources :questionnaires do resources :questions end end
4. Paparan dan pengisian soal selidik Pada halaman paparan soal selidik, anda boleh menyenaraikan semua soalan soal selidik dan menyediakan borang untuk mengisi jawapan. Edit pengawal Soal Selidik:
class QuestionnairesController < ApplicationController def show @questionnaire = Questionnaire.find(params[:id]) end # ... endDalam fail paparan, paparkan soalan soal selidik dan sediakan borang untuk mengisi jawapan:
# app/views/questionnaires/show.html.erb <h1><%= @questionnaire.title %></h1> <p><%= @questionnaire.description %></p> <% @questionnaire.questions.each do |question| %> <h3><%= question.content %></h3> <%= form_with model: Answer.new(question: question), url: answers_path, local: true do |form| %> <%= form.hidden_field :question_id, value: question.id %> <%= form.text_area :content %> <%= form.submit '提交答案' %> <% end %> <% end %>Dalam pengawal Jawapan, cipta kaedah untuk menyimpan jawapan:
class AnswersController < ApplicationController def create @answer = Answer.new(answer_params) if @answer.save redirect_to @answer.question.questionnaire, notice: '答案提交成功!' else render :new end end # ... private def answer_params params.require(:answer).permit(:content, :question_id) end endTambahkan laluan yang sepadan dalam fail penghalaan :
# config/routes.rb Rails.application.routes.draw do resources :questionnaires do resources :questions end resources :answers end5. Statistik soal selidik
Untuk melaksanakan fungsi statistik soal selidik, anda perlu menambah kod berikut dalam pengawal Soal Selidik:
class QuestionnairesController < ApplicationController def statistics @questionnaire = Questionnaire.find(params[:id]) end # ... endKemudian, cipta laluan yang sepadan dalam fail penghalaan:
# config/routes.rb Rails.application.routes.draw do resources :questionnaires do resources :questions member do get 'statistics' end end resources :answers endSeterusnya, paparkannya dalam fail paparan Statistik jawapan:
# app/views/questionnaires/statistics.html.erb <h1><%= @questionnaire.title %></h1> <p><%= @questionnaire.description %></p> <% @questionnaire.questions.each do |question| %> <h3><%= question.content %></h3> <% question.answers.group(:content).count.each do |answer, count| %> <p><%= answer %>: <%= count %> 人选择</p> <% end %> <% end %>Pada ketika ini, pembangunan sistem soal selidik dalam talian yang mudah selesai. Melalui kajian artikel ini, pembaca akan mempelajari cara menggunakan pangkalan data MySQL dan rangka kerja Ruby on Rails untuk mereka bentuk model pangkalan data sistem tinjauan soal selidik, dan melaksanakan fungsi penciptaan, pengisian dan statistik soal selidik. Ringkasan:
Tinjauan soal selidik memudahkan kami mendapatkan maklum balas pengguna dan data penyelidikan pasaran. Menggunakan MySQL dan Ruby on Rails untuk pembangunan, anda boleh membina sistem soal selidik dalam talian yang mudah dengan cepat. Dengan mengkaji artikel ini, pembaca boleh belajar cara mereka bentuk model pangkalan data, mencipta dan memindahkan jadual pangkalan data, dan cara menggunakan Ruby on Rails untuk mencipta, mengisi dan mengumpul statistik pada soal selidik. Saya berharap artikel ini dapat membantu pembaca, dan saya juga berharap pembaca dapat terus mengetahui dan mengembangkan fungsi sistem soal selidik.
Atas ialah kandungan terperinci Bagaimana untuk membangunkan sistem soal selidik dalam talian yang mudah menggunakan MySQL dan Ruby on Rails. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!