首頁  >  文章  >  資料庫  >  如何使用MySQL和Ruby on Rails開發一個簡單的線上投票系統

如何使用MySQL和Ruby on Rails開發一個簡單的線上投票系統

王林
王林原創
2023-09-21 13:41:201357瀏覽

如何使用MySQL和Ruby on Rails开发一个简单的在线投票系统

如何使用MySQL和Ruby on Rails開發一個簡單的線上投票系統

導語:
線上投票系統是一個常見的應用場景,它可以讓使用者在網頁上進行投票,並根據投票結果產生統計資料。本文將介紹如何使用MySQL和Ruby on Rails框架開發一個簡單的線上投票系統,並提供具體的程式碼範例。

一、專案準備
在開始開發之前,需要確保已經安裝並配置好以下環境:

  1. Ruby 及Ruby on Rails框架;
  2. MySQL 資料庫。

二、建立Rails工程
首先,透過命令列建立一個新的Rails工程:

rails new vote_system

三、設定資料庫
開啟專案目錄中的config/ database.yml 文件,設定資料庫連線資訊:

default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: your_username
  password: your_password
  socket: /var/run/mysqld/mysqld.sock

development:
  <<: *default
  database: vote_system_dev

將上述程式碼中的your_usernameyour_password 替換為你的MySQL帳號和密碼。

四、建立資料表
使用Rails的命令列工具產生一個投票模型和控制器:

rails generate scaffold Vote name:string count:integer
rails db:migrate

以上程式碼將自動產生一個名為vote的模型,並在資料庫中建立對應的資料表,該表包含兩個欄位:name 儲存投票項的名稱,count 儲存每個投票項的票數。

五、寫投票介面
開啟app/views/votes/index.html.erb 文件,用以下程式碼取代預設的範本程式碼:

<h1>在线投票系统</h1>

<% @votes.each do |vote| %>
  <div>
    <h2><%= vote.name %></h2>
    <p>当前票数:<%= vote.count %></p>
    <%= link_to '投票', vote, method: :patch %>
  </div>
<% end %>

上述程式碼使用了Ruby的範本引擎語法72637aecae1027e7d023ac098a170986 來遍歷投票項,並顯示名稱和目前票數。投票按鈕透過 link_to 方法生成,並使用HTTP的PATCH請求來更新投票數。

六、寫投票邏輯
開啟app/controllers/votes_controller.rb 文件,修改createupdate 方法如下:

def create
  @vote = Vote.new(vote_params)

  respond_to do |format|
    if @vote.save
      format.html { redirect_to votes_url, notice: '投票项创建成功。' }
      format.json { render :index, status: :created, location: @vote }
    else
      format.html { render :new }
      format.json { render json: @vote.errors, status: :unprocessable_entity }
    end
  end
end

def update
  @vote = Vote.find(params[:id])
  @vote.count += 1

  respond_to do |format|
    if @vote.save
      format.html { redirect_to votes_url, notice: '投票成功!' }
      format.json { render :index, status: :ok, location: @vote }
    else
      format.html { render :index }
      format.json { render json: @vote.errors, status: :unprocessable_entity }
    end
  end
end

private

def vote_params
  params.require(:vote).permit(:name, :count)
end

在上述程式碼中,create 方法用於建立新的投票項,update 方法用於更新投票數。其中,更新投票數的邏輯為每次點擊「投票」按鈕,對應投票項的 count 欄位加1。

七、啟動伺服器
在專案根目錄下執行以下命令啟動Rails伺服器:

rails server

然後在瀏覽器中開啟http://localhost:3000/votes ,即可存取投票系統介面。

結束語:
透過上述步驟,我們使用MySQL和Ruby on Rails框架成功開發了一個簡單的線上投票系統。開發者可以根據實際需求對系統進行擴展,例如新增使用者認證、投票選項的排序等功能。希望本文對你有幫助!

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

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