Javascript 如何动态更新其他页面';所容纳之物

Javascript 如何动态更新其他页面';所容纳之物,javascript,ruby-on-rails,Javascript,Ruby On Rails,这里是编程新手。我正在使用Rails创建一个可以进行评论的web应用程序,但我在确定从何处开始这一特定部分时遇到了一些困难。我非常感谢您的帮助: 比如说,在我的主页上,我想列出十大餐厅。每个地方旁边都会有一个分数。如果你点击该餐厅的链接,它会将你带到该餐厅的详细信息页面,在那里你可以对许多不同的品质进行评分。当用户评分时,分数将更新。我如何根据用户对每个地方的评价,在我的主页上反映分数和排名?认为这可能必须通过一些Javascript来完成(或者在Rails中是否有这样做的方法?)。谢谢 只有j

这里是编程新手。我正在使用Rails创建一个可以进行评论的web应用程序,但我在确定从何处开始这一特定部分时遇到了一些困难。我非常感谢您的帮助:


比如说,在我的主页上,我想列出十大餐厅。每个地方旁边都会有一个分数。如果你点击该餐厅的链接,它会将你带到该餐厅的详细信息页面,在那里你可以对许多不同的品质进行评分。当用户评分时,分数将更新。我如何根据用户对每个地方的评价,在我的主页上反映分数和排名?认为这可能必须通过一些Javascript来完成(或者在Rails中是否有这样做的方法?)。谢谢

只有javascript是不够的。

当网站加载到用户浏览器中时,数据库中的所有信息都会加载一次,就像html文件一样。即使您使用ajax或简单的重定向到:back方法更新餐厅对象,在其他页面或其他浏览器上也不会有任何更改

要解决这个问题,每次有人在你的应用程序中触发事件并在你的主页上接收事件时,你可以使用类似于推送器的东西来发送事件。如果应用程序的功能并不复杂,您可以在rails应用程序中使用自己的推送服务器,如faye。以下是关于使用railscast的参考:

无论如何,每当我需要在我的应用程序中添加一些实时功能时,我更喜欢使用pusher

关于投票过程,最好的解决方案是:

“twitter/activerecord声誉系统”

如果您不想使用ajax更新投票餐厅页面的内容,您可以在控制器中添加
vote
方法,使用
redirect\u to:back
。此指令将您的应用重定向到新url,完成后整个方法将重定向回更新投票状态的刷新页面

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任务,该任务将根据更新的数据库结构更新页面上的信息。

您的问题的纯粹答案是您需要一个集中存储数据并在视图中呈现给用户的位置

<> P> >你为什么要在<代码> Ruby on Rails 章节中问这个问题——这正是这个框架所适用的,如果你不考虑这个

,我会质疑你的能力。 --

数据库

Rails使用一个中央数据库来存储数据。它使用,使您能够随时随地访问该数据;允许您根据自己的要求对其进行操作:

在不详细说明如何从头开始制作应用程序的情况下,我将告诉您应该使用的基本原则:

#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 %>
#config/routes.rb
根目录“餐厅#索引”
资源:餐厅
#app/controllers/restaurants\u controller.rb
类RestaurantController<应用程序控制器
def索引
@餐馆
终止
终止
#app/models/restaurant.rb
Class餐厅
--

推荐阅读


您最好阅读有关如何使其正常工作的。这基本上就是Rails的用途;)

这就是我们使用数据库的原因。每当你呈现一个“视图”(主页、餐厅视图等)时,所有显示的信息都不是“静态”的,它是从数据库中提取的,因此,每次你更新数据库中的记录时,它都会反映在使用相同数据的任何页面上。waclock如是说。另外,您希望它仅在用户刷新页面时更新,还是在添加新分数时更新?好的,很好。我想在访问者刷新页面时更新它。如果主页上的每个地方都根据分数进行了颜色编码(例如,其行背景颜色为绿色表示分数较高,红色表示分数较低),是否需要任何类型的javascript?@wdace84如果你想在刷新时更新分数,那么你不需要其他任何东西,但是如果你想让分数自动更新,那么你需要ajax。对于颜色编码,您只需将不同的类应用于餐厅,然后使用css@user2675613谢谢你的帮助。如果颜色取决于他们的分数(例如:如果分数>90,则将颜色设置为绿色;如果分数<50,则将颜色设置为红色),该怎么办?这会在rails中完成吗(根据数据库中的分数更新类背景颜色)?