0

早上好,在我的 Ruby On Rails 应用程序中,我正在尝试为胜利和失败构建一个统计计数器。这些统计信息显示在我页面的侧边栏中,始终可见。对于这些值,我使用名为 Stats 的模型。统计信息应该是全局可用的,因为我想在每一面都显示它们,所以它们被放入 application_helper.rb。我还有两个操作,如果您单击添加赢/添加损失链接,则应调用该操作,该链接仅对管理员显示。单击链接后,您将被重定向到主页。目前,每次有人进入或刷新站点时,这两个计数器都会增加。你能帮我吗,我现在想解决这个问题几个小时,但我仍然不明白。

我的 application_helper

module ApplicationHelper

def stats
    @stats = Stats.find(1)
end
def addwin
    @stats = Stats.find(1)
    @stats.update_attribute(:wins, @stats.wins+1)
end

def addloss
    @stats = Stats.find(1)
    @stats.update_attribute(:loss, @stats.loss+1)

end

结尾

我的 application.html.erb 文件的摘录,侧边栏所在的位置:

    <tr><td>Dotards StatsTracker</td></tr>
    <tr><td>Wins: </td><td style="color:green"><%= stats.wins%></td></tr>
    <tr><td>Losses: </td><td style="color:red"><%= stats.loss%></td></tr>

    <hr>
    </table >
    <%if user_signed_in? && current_user.admin? %>
        <small><%= link_to "Add Win", news_index_path(addwin) %>|<%= link_to "Add Loss", news_index_path(addloss)%></small>
    <% end %>

如果有人可以帮助我会很棒,因为我不知道我还能做什么。非常感谢您提前。

4

1 回答 1

0
news_index_path(addwin)

在页面生成时直接调用 add win 方法,这就是计数器增加的原因。

将这两种方法移动到适当的控制器(可能是 news_controller?)并在 config/routes.rb 中创建路由,如下所示:

match '/addwin', to: 'news#addwin'

然后你会得到路径助手,你可以像这样使用:

link_to "Add Win" addwin_path

运行rake routes以查看生成的助手名称。

另外:我还将您的 Singleton Stat 考虑为模型,并在那里定义控制器仅使用的方法。

于 2012-07-29T11:27:15.703 回答