ホームページ > データベース > mysql チュートリアル > MySQLとRuby on Railsを使った簡単なオンラインアンケートシステムの開発方法

MySQLとRuby on Railsを使った簡単なオンラインアンケートシステムの開発方法

WBOY
リリース: 2023-09-21 10:49:58
オリジナル
1059 人が閲覧しました

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

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート