首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获得两个数字之间的投票的帖子?- Rails

在Rails中,可以通过使用数据库和模型来实现获得两个数字之间的投票的帖子。以下是一个可能的实现方式:

  1. 创建一个名为"Post"的模型,用于表示帖子。可以使用以下命令生成模型文件和数据库迁移:rails generate model Post title:string content:text votes:integer rails db:migrate
  2. 在生成的"app/models/post.rb"文件中,添加以下代码来定义模型之间的关系:class Post < ApplicationRecord has_many :votes end
  3. 创建一个名为"Vote"的模型,用于表示投票。可以使用以下命令生成模型文件和数据库迁移:rails generate model Vote post:references value:integer rails db:migrate
  4. 在生成的"app/models/vote.rb"文件中,添加以下代码来定义模型之间的关系:class Vote < ApplicationRecord belongs_to :post end
  5. 在帖子的视图中,可以使用表单来接收用户的投票。例如,在"app/views/posts/show.html.erb"文件中,可以添加以下代码:<%= form_with(model: [@post, @post.votes.build], local: true) do |form| %> <%= form.hidden_field :value, value: 1 %> <%= form.submit "Vote Up" %> <% end %> <%= form_with(model: [@post, @post.votes.build], local: true) do |form| %> <%= form.hidden_field :value, value: -1 %> <%= form.submit "Vote Down" %> <% end %>
  6. 在帖子的控制器中,可以处理投票的逻辑。例如,在"app/controllers/posts_controller.rb"文件中,可以添加以下代码:class PostsController < ApplicationController def show @post = Post.find(params[:id]) end def vote @post = Post.find(params[:id]) @vote = @post.votes.build(vote_params) if @vote.save redirect_to @post, notice: "Vote submitted successfully." else redirect_to @post, alert: "Failed to submit vote." end end private def vote_params params.require(:vote).permit(:value) end end
  7. 在路由文件中,将投票的动作映射到相应的控制器动作。例如,在"config/routes.rb"文件中,可以添加以下代码:Rails.application.routes.draw do resources :posts do post 'vote', on: :member end end

现在,当用户在帖子页面点击"Vote Up"或"Vote Down"按钮时,将会创建一个新的投票对象,并与相应的帖子关联起来。你可以根据需要进一步扩展和优化这个实现,例如添加用户认证、计算帖子的总投票数等功能。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券