Heim > Datenbank > MySQL-Tutorial > So entwickeln Sie ein einfaches Online-Abstimmungssystem mit MySQL und Ruby on Rails

So entwickeln Sie ein einfaches Online-Abstimmungssystem mit MySQL und Ruby on Rails

王林
Freigeben: 2023-09-21 13:41:20
Original
1438 Leute haben es durchsucht

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

So entwickeln Sie ein einfaches Online-Abstimmungssystem mit MySQL und Ruby on Rails

Einführung:
Das Online-Abstimmungssystem ist ein häufiges Anwendungsszenario, das es Benutzern ermöglicht, auf einer Webseite abzustimmen und statistische Daten basierend auf den Abstimmungsergebnissen zu generieren . In diesem Artikel wird die Entwicklung eines einfachen Online-Abstimmungssystems mit MySQL und dem Ruby on Rails-Framework vorgestellt und spezifische Codebeispiele bereitgestellt.

1. Projektvorbereitung
Bevor Sie mit der Entwicklung beginnen, müssen Sie sicherstellen, dass die folgenden Umgebungen installiert und konfiguriert wurden:

  1. Ruby und Ruby on Rails Framework
  2. MySQL-Datenbank.

2. Erstellen Sie ein Rails-Projekt.
Erstellen Sie zunächst ein neues Rails-Projekt über die Befehlszeile:

rails new vote_system
Nach dem Login kopieren
.

3. Konfigurieren Sie die Datenbank.
Öffnen Sie die Datei config/database.yml im Projektverzeichnis und konfigurieren Sie die Datenbankverbindungsinformationen:

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
Nach dem Login kopieren

Ersetzen Sie Ihr_Benutzername und Ihr_Passwort im obigen Code durch Ihr MySQL-Konto und Ihr Passwort. your_usernameyour_password 替换为你的MySQL账号和密码。

四、创建数据表
使用Rails的命令行工具生成一个投票模型和控制器:

rails generate scaffold Vote name:string count:integer
rails db:migrate
Nach dem Login kopieren

以上代码将自动生成一个名为 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 %>
Nach dem Login kopieren

上述代码使用了Ruby的模板引擎语法 <% %> 来遍历投票项,并显示名称和当前票数。投票按钮通过 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
Nach dem Login kopieren

在上述代码中,create 方法用于创建新的投票项,update 方法用于更新投票数。其中,更新投票数的逻辑为每次点击“投票”按钮,对应投票项的 count 字段加1。

七、启动服务器
在项目根目录下执行以下命令启动Rails服务器:

rails server
Nach dem Login kopieren

然后在浏览器中打开 http://localhost:3000/votes

4. Erstellen Sie eine Datentabelle

Verwenden Sie das Rails-Befehlszeilentool, um ein Abstimmungsmodell und einen Controller zu generieren:
rrreee

Der obige Code generiert automatisch ein Modell mit dem Namen vote und erstellt das entsprechende Modell im Datenbank Die Datentabelle enthält zwei Felder: name speichert den Namen des Abstimmungselements und count speichert die Anzahl der Stimmen für jedes Abstimmungselement. 🎜🎜5. Schreiben Sie die Abstimmungsschnittstelle 🎜Öffnen Sie die Datei app/views/votes/index.html.erb und ersetzen Sie den Standardvorlagencode durch den folgenden Code: 🎜rrreee🎜Der obige Code verwendet Rubys Template-Engine-Syntax < % % >, um die Abstimmungselemente zu durchlaufen und die Namen und die aktuelle Stimmenzahl anzuzeigen. Die Abstimmungsschaltfläche wird über die Methode link_to generiert und verwendet die HTTP-PATCH-Anfrage, um die Abstimmungsnummer zu aktualisieren. 🎜🎜6. Schreiben Sie die Abstimmungslogik🎜Öffnen Sie die Datei app/controllers/votes_controller.rb und ändern Sie die Methoden create und update wie folgt: 🎜rrreee🎜Im obigen Code Die Methode create wird verwendet, um neue Abstimmungselemente zu erstellen, und die Methode update wird verwendet, um die Anzahl der Stimmen zu aktualisieren. Unter anderem besteht die Logik zum Aktualisieren der Anzahl der Stimmen darin, dass jedes Mal, wenn auf die Schaltfläche „Abstimmen“ geklickt wird, das Feld count des entsprechenden Abstimmungselements um 1 erhöht wird. 🎜🎜7. Starten Sie den Server🎜Führen Sie den folgenden Befehl im Projektstammverzeichnis aus, um den Rails-Server zu starten:🎜rrreee🎜Dann öffnen Sie http://localhost:3000/votes im Browser, um auf den zuzugreifen Abstimmungssystemschnittstelle. 🎜🎜Fazit: 🎜Durch die oben genannten Schritte haben wir erfolgreich ein einfaches Online-Abstimmungssystem mit MySQL und dem Ruby on Rails-Framework entwickelt. Entwickler können das System je nach tatsächlichem Bedarf erweitern, beispielsweise um Benutzerauthentifizierung, Sortierung von Abstimmungsoptionen und andere Funktionen. Ich hoffe, dieser Artikel ist hilfreich für Sie! 🎜

Das obige ist der detaillierte Inhalt vonSo entwickeln Sie ein einfaches Online-Abstimmungssystem mit MySQL und Ruby on Rails. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage