如何使用jQuery更新rails模型上的字段?
我有一个模型,玩家,有一个场总积分 在我的主页上,我有球员姓名和总积分:如何使用jQuery更新rails模型上的字段?,jquery,ruby-on-rails,coffeescript,Jquery,Ruby On Rails,Coffeescript,我有一个模型,玩家,有一个场总积分 在我的主页上,我有球员姓名和总积分: <div id="player1"> <h3><%= "#{@player1.first_name} #{@player1.last_name} (#{@player1.total_points})" %></h3> </div> 这是可行的(如中所述,它将消息记录到控制台),但我不确定如何将click@player1.total_points增加1,然后重
<div id="player1">
<h3><%= "#{@player1.first_name} #{@player1.last_name} (#{@player1.total_points})" %></h3>
</div>
这是可行的(如中所述,它将消息记录到控制台),但我不确定如何将click@player1.total_points增加1,然后重新呈现上面的消息(最好不重新加载整个页面)。谢谢 既然您选择使用jquery(我认为这可能是计算时代最伟大的发明:),这就相对容易了 您需要使用post命令,该命令将使用AJAX发回您的应用程序。因此,在您的例子中,coffeescript将是$('#player1')。单击->$。根据
然后,success方法可以获取返回数据并对其进行处理。如果此时html发生了更改,则可以返回html并用JQuery替换相应的html块。您还可以根据需要返回JSON、XML等。我认为在这种情况下,返回一块html可能是合适的。您需要一个适当的视图进行渲染。如果您调整HTML,以便轻松找到总积分,您将有一个更好的时间。大概是这样的:
<div id="player1">
<h3>
<%= "#{@player1.first_name} #{@player1.last_name}" %>
(<span class="total"><%= @player1.total_points %></span>)
</h3>
</div>
$ ->
$('#player1').click (e) ->
e.preventDefault()
$.post 'whatever-the-url-is', (new_total) ->
$('#player1 .total_points').html(new_total)
$ ->
$('#player1').click (e) ->
e.preventDefault()
$t = $('#player1 .total_points')
$t.html(parseInt($t.html(), 10) + 1)
如果您没有在服务器上存储任何内容,则可以这样做:
<div id="player1">
<h3>
<%= "#{@player1.first_name} #{@player1.last_name}" %>
(<span class="total"><%= @player1.total_points %></span>)
</h3>
</div>
$ ->
$('#player1').click (e) ->
e.preventDefault()
$.post 'whatever-the-url-is', (new_total) ->
$('#player1 .total_points').html(new_total)
$ ->
$('#player1').click (e) ->
e.preventDefault()
$t = $('#player1 .total_points')
$t.html(parseInt($t.html(), 10) + 1)
谢谢,这真的很有帮助!快速跟进问题:在url调用的控制器操作中,我使用什么来引用新的_总数?我试过params[:new_total],结果是零。再次感谢?这取决于您调用的方式,通常您会说
$。发布“一些url”、数据、回调
,其中数据
将是在控制器中的参数
中结束的对象。因此,在CoffeeScript中使用的数据
决定了如何解释参数
。另外,你不会将新的总数发送到服务器,服务器只会向数据库发送一个列增量,从数据库中取出新的总数,然后将其发送回。谢谢你的反馈,但我对这一点非常陌生,我想这超出了我的理解。我上面包含的是我真实代码的简化版本。我的真实数据对象现在包含在上面。你能提供一个我如何在控制器中访问它的例子吗?我在你的问题中没有看到任何新的东西。基本上,您需要一个到config/routes.rb
的路由,然后是该路由的控制器方法(只不过是一个调用),然后从数据库中加载总数,并将其作为响应发送回去。这取决于路由。您可能有一个/player/:id/add_point
或类似内容的发布路径,然后id
将位于URL中,您可以$.POST”/player/{id}/add_point
其中id
是保存播放器的id
的本地(CoffeeScript)变量。谢谢!在url调用的控制器操作中,我使用什么来引用传递的数据?