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:
2. Erstellen Sie ein Rails-Projekt.
Erstellen Sie zunächst ein neues Rails-Projekt über die Befehlszeile:
rails new vote_system.
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
Ersetzen Sie Ihr_Benutzername
und Ihr_Passwort
im obigen Code durch Ihr MySQL-Konto und Ihr Passwort. your_username
和 your_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 文件,修改 create
和 update
方法如下:
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
Verwenden Sie das Rails-Befehlszeilentool, um ein Abstimmungsmodell und einen Controller zu generieren:
rrreee
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 df0f89786036e190db6c2138a7ad7453
, 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!