Rumah >pangkalan data >tutorial mysql >Bagaimana untuk membangunkan sistem soal selidik dalam talian yang mudah menggunakan MySQL dan Ruby on Rails

Bagaimana untuk membangunkan sistem soal selidik dalam talian yang mudah menggunakan MySQL dan Ruby on Rails

WBOY
WBOYasal
2023-09-21 10:49:581060semak imbas

如何使用MySQL和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

  # ...
end

Dalam 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
end

Tambahkan laluan yang sepadan dalam fail penghalaan :

# config/routes.rb
Rails.application.routes.draw do
  resources :questionnaires do
    resources :questions
  end
  resources :answers
end

5. 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

  # ...
end

Kemudian, 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
end

Seterusnya, 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn