Rails 3使用link_to递增计数器的值

时间:2012-07-29 11:19:35

标签: ruby-on-rails ruby counter increment link-to

早上好, 在我的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 %>
如果有人可以帮助我会很棒,因为我不知道我还能做些什么。 非常感谢你提前。

1 个答案:

答案 0 :(得分: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视为模型,并定义控制器刚刚使用的方法。