在rails中评级系统,我的设置是否可行?

时间:2016-06-15 10:17:07

标签: javascript ruby-on-rails ruby

任何帮助都会受到赞赏 - 几周前我刚刚开始使用rails,而且我现在很失落。所以我做了一个应用程序,人们可以提交问题,这些问题随机化并一次显示一个。我以一种非常迂回的方式实现了这一点。我将根据具体情况列出我明确做的事情。

我创建了一个问题模型以及一个带有新操作和创建操作的问题控制器 - 我在一个表单中提交了与新操作相关的视图中的问题。为了显示问题,我使用了javascript。我首先在页面中使用嵌入式ruby来遍历数据库中的所有问题。然后我将它们全部放在他们自己的<li>中,并将其设置为具有display:none的类。然后我使用javascript来获取<li>标签的类,并将所有问题都推到了一个数组上。

然后,我只是通过一遍又一遍地更新div元素的html,使用javascript一次显示一个问题。现在,我想添加一个简单的评级系统(如+1或-1的东西)。我想以人们对问题的评分并将其平均化。但我真的不知道如何实现这一点。我认为我应该有一个属于问题模型的评级模型(has_many评级)。应该有一个评级控制器,其中包含编辑和更新操作,每当有人对问题进行评分时,都会更改评分。

问题是我不知道如何准确地实现这一点,因为到目前为止我已经做了。对我来说一个很大的问题是,当我使用javascript来显示问题时,问题的评级与问题本​​身相关联。有什么建议?为论文道歉。

1 个答案:

答案 0 :(得分:0)

首先,您应该通过使用JS来表达您的问题来澄清您的意思。听起来你正在做的事情或多或少是正确的,如果你确实需要动态更新页面的时间,但它也可能听起来像你只想显示一个问题列表,你可以用HTML做。

其次,您应该决定是否真的需要额外的评级模型。它可能非常有用,因此您可以跟踪评级何时进入,谁制作评级以及随时间变化的情况;但如果您真的只想知道任何给定时间的评分,您可以在问题上找到整数rating列。

第三,显示您的评分只需要在显示时从问题中获取更多信息。假设您在视图中有一个@question对象,而您正在显示@question.text之类的文字,您可以通过@question.rating执行相同的评分,或者,如果您去模型路线,类似于@question.ratings.count。如果您仍然希望使用JS来更新所需的值,只需创建一个字符串或将整个对象转换为JSON,以便您可以在JS中处理它。

最后,你提到需要一个评级控制器。这很好,但要认识到您需要在页面上使用AJAX将事件发送到该控制器,以便您可以将点击(投票)与实际的数据库更改联系起来。