【发布时间】:2026-02-21 21:15:01
【问题描述】:
我正在开发一个小型图片应用程序。我正在尝试做的是建立一个计数器来跟踪每个图像被点击的次数。
现在我认为:
<% @galleries.each do |g| %>
<% for image in g.images %>
<div id="picture">
<%= render 'top_nav'%>
<%= link_to g.source, :target => true do %>
<%= image_tag image.file_url(:preview) %>
<% g.vote %>
<% end %>
<%= will_paginate(@galleries, :next_label => "Forward", :previous_label => "Previous") %>
</div>
显然这不起作用,因为 g.vote 每次呈现时都会执行,而不是单击。这是我的模型中的投票方法:
def vote
self.increment!(:score)
end
我正在寻找仅在单击上图时才运行投票方法的解决方案。这些链接仅指向外部资源,而不是显示操作。我是否应该构建一个控制器操作来接受帖子、执行投票,然后重定向到源?
无论如何,正在寻找一些想法,谢谢。
【问题讨论】:
-
您可以按照您的建议执行
onClick事件,该事件会触发对您的投票操作的 ajax 调用。
标签: ruby-on-rails ruby-on-rails-3