如何使用MySQL和Ruby on Rails開發(fā)一個簡單的在線投票系統(tǒng)
導(dǎo)語:
在線投票系統(tǒng)是一個常見的應(yīng)用場景,它可以讓用戶在網(wǎng)頁上進(jìn)行投票,并根據(jù)投票結(jié)果生成統(tǒng)計數(shù)據(jù)。本文將介紹如何使用MySQL和Ruby on Rails框架開發(fā)一個簡單的在線投票系統(tǒng),并提供具體的代碼示例。
一、項目準(zhǔn)備
在開始開發(fā)之前,需要確保已經(jīng)安裝并配置好以下環(huán)境:
- Ruby 及 Ruby on Rails框架;MySQL 數(shù)據(jù)庫。
二、創(chuàng)建Rails工程
首先,通過命令行創(chuàng)建一個新的Rails工程:
rails new vote_system
登錄后復(fù)制
三、配置數(shù)據(jù)庫
打開項目目錄中的 config/database.yml 文件,配置數(shù)據(jù)庫連接信息:
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
登錄后復(fù)制
將上述代碼中的 your_username
和 your_password
替換為你的MySQL賬號和密碼。
四、創(chuàng)建數(shù)據(jù)表
使用Rails的命令行工具生成一個投票模型和控制器:
rails generate scaffold Vote name:string count:integer rails db:migrate
登錄后復(fù)制
以上代碼將自動生成一個名為 vote
的模型,并在數(shù)據(jù)庫中創(chuàng)建對應(yīng)的數(shù)據(jù)表,該表包含兩個字段:name
存儲投票項的名稱,count
存儲每個投票項的票數(shù)。
五、編寫投票界面
打開 app/views/votes/index.html.erb 文件,用以下代碼替換默認(rèn)的模板代碼:
<h1>在線投票系統(tǒng)</h1> <% @votes.each do |vote| %> <div> <h2><%= vote.name %></h2> <p>當(dāng)前票數(shù):<%= vote.count %></p> <%= link_to '投票', vote, method: :patch %> </div> <% end %>
登錄后復(fù)制
上述代碼使用了Ruby的模板引擎語法 <% %>
來遍歷投票項,并顯示名稱和當(dāng)前票數(shù)。投票按鈕通過 link_to
方法生成,并使用HTTP的PATCH請求來更新投票數(shù)。
六、編寫投票邏輯
打開 app/controllers/votes_controller.rb 文件,修改 create
和 update
方法如下:
def create @vote = Vote.new(vote_params) respond_to do |format| if @vote.save format.html { redirect_to votes_url, notice: '投票項創(chuàng)建成功。' } 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
登錄后復(fù)制
在上述代碼中,create
方法用于創(chuàng)建新的投票項,update
方法用于更新投票數(shù)。其中,更新投票數(shù)的邏輯為每次點擊“投票”按鈕,對應(yīng)投票項的 count
字段加1。
七、啟動服務(wù)器
在項目根目錄下執(zhí)行以下命令啟動Rails服務(wù)器:
rails server
登錄后復(fù)制
然后在瀏覽器中打開 http://localhost:3000/votes
,即可訪問投票系統(tǒng)界面。
結(jié)束語:
通過以上步驟,我們使用MySQL和Ruby on Rails框架成功開發(fā)了一個簡單的在線投票系統(tǒng)。開發(fā)者可以根據(jù)實際需求對系統(tǒng)進(jìn)行擴展,例如添加用戶認(rèn)證、投票選項的排序等功能。希望本文對你有所幫助!
以上就是如何使用MySQL和Ruby on Rails開發(fā)一個簡單的在線投票系統(tǒng)的詳細(xì)內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!