【问题标题】:Rails Updating a DIV (with reload from model) after a javascript calljavascript调用后Rails更新DIV(从模型重新加载)
【发布时间】:2012-05-25 11:58:55
【问题描述】:

好的,我有一个页面可以显示客户有多少小部件。这是视图(haml):

#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 中做到这一点。

【问题讨论】:

    标签: javascript ruby-on-rails ruby-on-rails-3 unobtrusive-javascript


    【解决方案1】:

    你可以这样做:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      相关资源
      最近更新 更多