MySQL と Ruby on Rails を使用してシンプルなオンライン アンケート システムを開発する方法
はじめに:
デジタル時代の到来により、アンケートは重要なものになりました。ユーザーのフィードバック情報と市場調査の重要な手段。この記事では、MySQLデータベースとRuby on Railsフレームワークを利用して、簡単なオンラインアンケートシステムを開発する方法を紹介します。この記事を読むことで、読者はデータベース モデルの設計、データベース テーブルの作成と移行、データ関連付けの設定方法、および Ruby on Rails を使用してアンケートの統計を作成、入力、収集する方法を学ぶことができます。
1. データベース設計
始める前に、まずデータベース モデルを設計する必要があります。この記事では、アンケート、質問と回答という 3 つのデータベース テーブルを設計します。このうち、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
2. アンケートの作成
アンケートを作成する前に、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
3. 質問の作成
は、アンケートの作成と似ています。質問モデルと質問コントローラを作成する必要があります。
# 创建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
4. アンケートの表示と記入
アンケート表示ページでは、アンケートのすべての質問をリストし、回答を記入するためのフォームを提供できます。アンケート コントローラーを編集します:
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 %>
アンサー コントローラーで、保存するメソッドを作成します。回答:
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
5. アンケート統計
アンケート統計機能を実装するには、アンケートに次のコードを追加する必要があります。コントローラ:
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 中国語 Web サイトの他の関連記事を参照してください。