早上好, 在我的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 %>
如果有人可以帮助我会很棒,因为我不知道我还能做些什么。
非常感谢你提前。
答案 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视为模型,并定义控制器刚刚使用的方法。