首頁 資料庫 mysql教程 如何使用MySQL和Ruby on Rails開發一個簡單的線上問卷調查系統

如何使用MySQL和Ruby on Rails開發一個簡單的線上問卷調查系統

Sep 21, 2023 am 10:49 AM
mysql ruby on rails 線上問卷

如何使用MySQL和Ruby on Rails开发一个简单的在线问卷调查系统

如何使用MySQL和Ruby on Rails開發一個簡單的線上問卷調查系統

引言:
隨著數位化時代的到來,問卷調查成為了獲取使用者回饋資訊、市場調查的一種重要手段。本文將介紹如何使用MySQL資料庫和Ruby on Rails框架開發一個簡單的線上問卷調查系統。透過本文的學習,讀者將了解如何設計資料庫模型、建立並遷移資料庫表、設定資料關聯,以及如何使用Ruby on Rails實現問卷的建立、填寫和統計功能。

一、資料庫設計
在開始之前,首先需要設計資料庫模型。本文將設計三個資料庫表:Questionnaires、Questions和Answers。其中,Questionnaires表用於存儲問卷的基本信息,Questions表用於存儲問題的信息,Answers表用於存儲用戶填寫的答案。

# 创建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
登入後複製

在產生完資料庫遷移檔案後,需要在遷移檔案中定義表格的結構。開啟每個遷移檔案並編輯,新增對應的列和關聯關係。

# 这是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
登入後複製

遷移資料庫表

rails db:migrate
登入後複製

二、建立問卷
在建立問卷之前,需要先在Ruby on Rails中建立對應的模型和控制器。執行以下命令:

# 创建Questionnaire模型
rails generate model Questionnaire
# 创建Questionnaire控制器
rails generate controller Questionnaires
登入後複製

編輯控制器中的程式碼如下:

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
登入後複製

在視圖檔案中,首先建立一個新的問卷:

# 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 %>
登入後複製

然後,在路由文件中建立對應的路由:

# config/routes.rb
Rails.application.routes.draw do
  resources :questionnaires
end
登入後複製

三、建立問題
和建立問卷類似,需要建立Question模型和Questions控制器。

# 创建Question模型
rails generate model Question
# 创建Questions控制器
rails generate controller Questions
登入後複製

編輯控制器中的程式碼如下:

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
登入後複製

在視圖檔案中,建立一個新的問題:

# 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 %>
登入後複製

對應地,在路由檔案中新增對應的路由:

# config/routes.rb
Rails.application.routes.draw do
  resources :questionnaires do
    resources :questions
  end
end
登入後複製

四、問卷展示與填寫
在問卷展示頁面,可以列出問卷的所有問題並提供填寫答案的表單。編輯Questionnaires控制器:

class QuestionnairesController < ApplicationController
  def show
    @questionnaire = Questionnaire.find(params[:id])
  end

  # ...
end
登入後複製

在檢視檔案中,展示問卷的問題並提供填寫答案的表單:

# 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 %>
登入後複製

在Answers控制器中,建立儲存答案的方法:

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
登入後複製

在路由檔案中加入對應的路由:

# config/routes.rb
Rails.application.routes.draw do
  resources :questionnaires do
    resources :questions
  end
  resources :answers
end
登入後複製

五、問卷統計
要實現問卷統計功能,需要在Questionnaires控制器中加入以下程式碼:

class QuestionnairesController < ApplicationController
  def statistics
    @questionnaire = Questionnaire.find(params[:id])
  end

  # ...
end
登入後複製

然後,在路由檔案中建立對應的路由:

# config/routes.rb
Rails.application.routes.draw do
  resources :questionnaires do
    resources :questions
    member do
      get 'statistics'
    end
  end
  resources :answers
end
登入後複製

接下來,在檢視檔案中展示答案統計結果:

# 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 %>
登入後複製

至此,一個簡單的線上問卷調查系統的開發就完成了。透過本文的學習,讀者將了解如何使用MySQL資料庫和Ruby on Rails框架來設計問卷調查系統的資料庫模型,並實現問卷的創建、填寫和統計功能。

總結:
問卷調查使得我們能夠更方便地獲取使用者回饋和市場研究資料。使用MySQL和Ruby on Rails進行開發,可以快速建立一個簡單的線上問卷調查系統。透過本文的學習,讀者可以了解如何設計資料庫模型、建立並遷移資料庫表,以及如何使用Ruby on Rails實現問卷的建立、填寫和統計功能。希望本文對讀者有幫助,也希望讀者能繼續深入學習和擴展問卷調查系統的功能。

以上是如何使用MySQL和Ruby on Rails開發一個簡單的線上問卷調查系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MySQL:初學者的數據管理易用性 MySQL:初學者的數據管理易用性 Apr 09, 2025 am 12:07 AM

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。

忘記數據庫密碼,能在Navicat中找回嗎? 忘記數據庫密碼,能在Navicat中找回嗎? Apr 08, 2025 pm 09:51 PM

Navicat本身不存儲數據庫密碼,只能找回加密後的密碼。解決辦法:1. 檢查密碼管理器;2. 檢查Navicat的“記住密碼”功能;3. 重置數據庫密碼;4. 聯繫數據庫管理員。

navicat premium怎麼創建 navicat premium怎麼創建 Apr 09, 2025 am 07:09 AM

使用 Navicat Premium 創建數據庫:連接到數據庫服務器並輸入連接參數。右鍵單擊服務器並選擇“創建數據庫”。輸入新數據庫的名稱和指定字符集和排序規則。連接到新數據庫並在“對象瀏覽器”中創建表。右鍵單擊表並選擇“插入數據”來插入數據。

mysql:簡單的概念,用於輕鬆學習 mysql:簡單的概念,用於輕鬆學習 Apr 10, 2025 am 09:29 AM

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL和SQL:開發人員的基本技能 MySQL和SQL:開發人員的基本技能 Apr 10, 2025 am 09:30 AM

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

navicat怎麼新建連接mysql navicat怎麼新建連接mysql Apr 09, 2025 am 07:21 AM

可在 Navicat 中通過以下步驟新建 MySQL 連接:打開應用程序並選擇“新建連接”(Ctrl N)。選擇“MySQL”作為連接類型。輸入主機名/IP 地址、端口、用戶名和密碼。 (可選)配置高級選項。保存連接並輸入連接名稱。

phpmyadmin怎麼打開 phpmyadmin怎麼打開 Apr 10, 2025 pm 10:51 PM

可以通過以下步驟打開 phpMyAdmin:1. 登錄網站控制面板;2. 找到並點擊 phpMyAdmin 圖標;3. 輸入 MySQL 憑據;4. 點擊 "登錄"。

navicat如何執行sql navicat如何執行sql Apr 08, 2025 pm 11:42 PM

在 Navicat 中執行 SQL 的步驟:連接到數據庫。創建 SQL 編輯器窗口。編寫 SQL 查詢或腳本。單擊“運行”按鈕執行查詢或腳本。查看結果(如果執行查詢的話)。

See all articles