这里的编程新手。我正在使用Rails创建一个可以进行评论的网络应用程序,但是在确定从哪个特定部分开始的时候我会遇到一些麻烦。我很感激任何帮助:
让我们说在我的主页上我想要一个前10名的餐馆名单。在每个地方旁边都会有一个分数。如果您点击该餐厅的链接,它会将您带到该餐厅的详细页面,您可以在其中评估多种不同的品质。当用户评价该分数将更新的地方。如何根据用户对每个地方的评分,将该分数和排名反映在我的主页上?认为这可能必须使用一些Javascript(或者有没有办法在Rails中执行此操作?)。谢谢!
答案 0 :(得分:0)
只有javascript是不够的。
当在用户的浏览器中加载网站时,数据库中的所有信息都会被加载一次,就像html文件一样。即使您使用ajax或简单的redirect_to:back方法更新餐馆对象,其他页面或其他浏览器也不会有任何更改。
要解决此问题,每当有人在您的应用中触发事件并在您的主页上接收此事件时,您就可以使用推送器之类的内容发送事件。如果您的应用程序的功能并不复杂,您可以在rails应用程序中使用自己的推送服务器,如faye。以下是有关使用它的railscast的参考:
http://railscasts.com/episodes/260-messaging-with-faye?view=similar
无论如何,每当我需要在我的应用中添加一些实时功能时,我更喜欢使用推送器。
关于投票过程,这样做的好方法是:
"微/了activerecord-信誉系统"
如果您不想使用会更新您投票的餐厅页面内容的ajax,则可以使用vote
在控制器中添加redirect_to :back
方法。此说明会将您的应用重定向到新的网址,完成后,整个方法将重定向回更新的页面并更新投票状态。
def vote
value = params[:type] == "up" ? 1 : -1
@haiku = Haiku.find(params[:id])
@haiku.add_or_update_evaluation(:votes, value, current_user)
redirect_to :back, notice: "Thank you for voting!"
end
要在其他用户对餐馆投票时动态刷新主页,您应该创建一个rake任务,该任务将根据更新的数据库结构更新页面上的信息。
答案 1 :(得分:0)
您的问题的纯粹答案是您需要data persistence - 集中存储数据的地方&在用户的视图中呈现它。
有趣的是,为什么你应该在Ruby on Rails
部分提出这个问题 - 这是完全这个框架的用途,如果你没有,我会质疑你的能力&# 39;不要考虑这个
-
<强>数据库强>
Rails使用中央数据库来存储您的数据。它使用MVC programming pattern使您能够在任何需要的地方访问该数据;允许您根据自己的要求进行操作:
如果不详细说明如何从头开始制作您的应用,我将为您提供您应该使用的基本原则:
#config/routes.rb
root "restaurants#index"
resources :restaurants
#app/controllers/restaurants_controller.rb
Class RestaurantsController < ApplicationController
def index
@restaurants = Restaurant.all
end
end
#app/models/restaurant.rb
Class Restaurant < ActiveRecord::Base
has_many :reviews
end
#app/models/review.rb
Class Review < ActiveRecord::Base
belongs_to :restaurant
end
#app/views/restaurants/index.html.erb
<% for restaurant in @restaurants do %>
<%= restaurant.reviews.count %>
<% end %>
-
推荐阅读
您最好阅读Rails beginner guide如何使其正常工作。它基本上是Rails的用途;)