【问题标题】:How to implement a voting system in the play framework?如何在play框架中实现一个投票系统?
【发布时间】:2015-06-30 03:20:42
【问题描述】:

我正在尝试为 SO 或 reddit 等问题/答案实施投票系统。 到目前为止,我已经嘲笑了一些问题和答案。其中有一个带有箭头的脚本用于upvote / downvote,它改变了箭头的颜色并增加了箭头旁边的数字以指示投票数。

但现在我被困住了。

模拟的答案/问题需要由 Scala 模板生成,而不是由我手动输入。我不知道如何做到这一点。

这是为箭头着色并计算投票的脚本: (不得不提一下,到目前为止只有第一个箭头起作用。这可能是因为ID应该是唯一的,所以第二个箭头会被忽略?)

<script>
    $(document).ready(function() {
        $('#icon').click(function() {
            var $this = $(this);
            $this.css("color","orange");
            var num = $('#num');
            var currentNumber = num.text().length ? parseInt(num.text()) : 0;
            num.text(currentNumber + 1);
        });
    });
</script> 

这是一些带有箭头的答案列表条目和我也手动输入的投票编号的示例:

<li class="list-group-item" > <span id="icon" class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span><span id="num"></span> 7 <span class="glyphicon glyphicon-arrow-down" aria-hidden="true"></span> Die Schleife springt durch <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> <span class="glyphicon glyphicon-remove" aria-hidden="true"></span></li>
<li class="list-group-item" > <span id="icon" class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span><span id="num"></span> 1 <span class="glyphicon glyphicon-arrow-down" aria-hidden="true"></span> Das Programm hängt sich auf <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> <span class="glyphicon glyphicon-remove" aria-hidden="true"></span></li>

这是它目前的样子。

我该如何从这里开始?我对 play 框架很新,它是 scala 模板,所以也许我可以让框架生成一个通用的箭头/投票组合,我可以稍后处理,而不是手动放入这些行? 我是否必须以某种方式将选票保存在真实数据库中? 如何进一步处理投票,即如何将它们放入变量中?

StackOverflow 上还有几个问题和我的差不多,但是几乎没有一个是使用 play 框架的。

[编辑]:这是JSfiddle,只需点击最左边的箭头。

【问题讨论】:

  • 需要由 Scala 模板生成是什么意思?您想在您的视图中生成问题吗?您想从数据库中检索它们并在视图中以通用方式显示它们吗?
  • 英语不是我的母语,所以我不知道如何说得更好:我已将 html 硬编码到文件中以显示一些问题/答案对。但是当我计划稍后使用数据库时,我希望能够通过 scala 模板本身获得问题和答案。现在我已经开始研究它并完成了一个数据库,我可以在其中存储和检索 q/as 并在我的视图中显示它们。由于我还没有完全完成,我还没有回答我自己的问题。
  • 好的,基本思想是:在您的控制器中,您可以从数据库中检索问题/答案,然后将它们作为参数提供给您的视图。在视图中,您可以迭代项目 - 使用 for 甚至使用 map
  • 我提供了更多解释的答案

标签: java javascript html scala playframework


【解决方案1】:

假设你有一个类 Question 有一个字段“文本”

class Question {
    long id;
    String text;
}

还有一个类 Answer 有一个字段“文本”

class Answer {
    String text;
}

现在在您的控制器(可能是Application.java)中,首先您会得到问题和相应的答案,然后将它们提供给您的视图:

public static Result showQuestion() {
    Question q = Question.find.byId(1);
    List<Answer> possibleAnswers = Answer.findByQuestion(q);
    return ok(showquestion.render(q, possibleAnswers);
}

现在在你看来你有这个:

@(q: Question, answers: List[Answer])

<h3>@q.text</h3>

<ul>
@for(answer <- answers){
    <li>@answer.text</li>
}
</ul>

当然,答案的标记可以任意复杂(包括投票、箭头、图标等)。

【讨论】:

  • 感谢您的代码,但自从我在这里发布以来,我已经完成了我项目的大部分内容。 :) 我已经提取了 2 个自己的课程,我通过他们的 ID 链接的问题和答案。我还编写了一个视图类,几乎可以满足我的要求,我仍然需要将 voteScore 保存到我的数据库中,这有时不起作用(请参阅我在其中写的其他 SO 帖子:stackoverflow.com/questions/30170304/…)。总而言之,我使用的方法与您在这里写的相同,所以我会接受您的帖子作为我的答案。
猜你喜欢
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多