2

好的,我有一个页面,显示客户他有多少个Widgets。这里的视图(haml):Rails在JavaScript调用后更新DIV(与模型重新加载)

#available 
    = "Available widgets: #{@customer.widgets.unused.count()}" 

(“未使用”是模型中显示可用小部件的范围)。

当客户使用带“:remote => true”的表单来兑换小工具时,某些javascript会在页面上放置一个漂亮的DIV动画,并且模型会被控制器更新。

这里的控制器:

def redeem 
    @customer = Customer.find(params[:customer_id]) 
    number = params[:amount].to_i 
    unless @customer.widgets.unused.empty? 
     number.times do 
     @customer = Customer.find(params[:customer_id]) 
     widget = @customer.widgets.unused.first # Grab first unused pass 
     widget.status = "Redeemed" 
     widget.save! 
     end 
    else 
     @pay = "true" 
     # customer.widgets.new 
    end 
    # redirect_to @customer 
    end 

而这里的JavaScript(js.erb):

var number = <%= params[:amount] %>; 
<% if @pay.eql? "true" %> 
    $("#widget-pay").modal('toggle'); 
<% else %> 
    while (number > 0) { 
    var item = $('<div class="widget-show">...</div>'); 
    $('#allwidgets').isotope('insert', item); 
    number --; 
    } 
<% end %> 

我的问题是我现在要更新为新插件的 “#available” DIV计数。我该怎么做呢?

在最坏的情况下,我可以重新加载页面,以便再次从模型中提取数据,最好只更新DIV。我似乎都无法从javascript中做到这一点。

回答

1

你可以做这样的事情:

render :js => "$('#available').append(widget)" 
widget.save! 
相关问题