1

如果我的问题听起来很完整,我首先道歉,但我是 Rails 的新手,我完全不确定框架中发生了什么。

我正在阅读一本关于“Ruby on Rails”的书,我只需要在单击按钮时从表中删除一些行。我在 assets/javascript/*.js.coffee 添加的 JavaScript 如下:

if $("#cart").length is 1
  $("#cart").hide "blind",
    direction: "vertical"
  , 1000
$("#cart tr").not(".total_line").remove()

原始的 JavaScript(因为我是咖啡 js 的新手,所以我使用了一个在线转换器来转换它,我不确定它是否正确):

if ($('#cart').length == 1) { $('#cart').hide("blind", {direction: "vertical" }, 1000); }

$('#cart tr').not('.total_line').remove();

我在控制器的destroy方法中添加了:

format.js {}

现在方法看起来像:

  def destroy
    #@cart = Cart.find(params[:id])
    #@cart.destroy
    @cart = current_cart
    @cart.destroy
    session[:cart_id] = nil

    respond_to do |format|
      #format.html { redirect_to store_url,notice: 'Your cart is currently empty' }
      format.js { }
      format.html { redirect_to store_url }
      format.json { head :no_content }
    end
  end

但它给了我以下错误(在单击应该调用js的按钮之后):

模板丢失

缺少模板 carts/destroy、application/destroy with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee]}。在以下位置搜索:*“/home/gotqn/Aptana Projects/depot/app/views”

经过一番搜索,我发现这个问题模板缺失,它说我需要重定向到我的方法中的某个地方。我只是尝试写:

format.js {head :no_content }

我确实没有再次出现错误,但没有执行 JavaScript。

我真的需要一些帮助来解决这个问题。提前致谢。

4

1 回答 1

2

资产不是动态的,它们是在服务器启动时生成的(至少在生产时)。您需要一个view/carts/destroy.js.erb包含所需代码的模板。如果 js 本身是静态的,那么你可以在这个模板中使用要执行的资产文件。

于 2012-11-10T10:23:59.440 回答