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 {}

how メソッドは次のようになります。

  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を呼び出す必要があるボタンがクリックされた後):

テンプレートがありません

{:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee]} のテンプレート carts/destroy、application/destroy がありません。検索場所: * "/home/gotqn/Aptana Projects/depot/app/views"

いくつか検索した結果、この質問Template is missing が見つかりました。この質問では、メソッドのどこかにリダイレクトする必要があると書かれています。私は単に書いてみます:

format.js {head :no_content }

本当にエラーは出ませんが、JavaScript は実行されません。

この問題について本当に助けが必要です。前もって感謝します。

4

1 に答える 1

2

アセットは動的ではなく、サーバーの起動時に生成されます (少なくとも本番環境では)。必要view/carts/destroy.js.erbなコードを含むテンプレートが必要です。js 自体が静的な場合は、アセット ファイルを使用してこのテンプレートで実行できます。

于 2012-11-10T10:23:59.440 に答える