1

私は削除/破棄で立ち往生しています。どんな助けでも大歓迎です!

Postgres を使用して Mac 10.8.3 で Ruby 2.0.0 と Rails 3.2.6 を使用しています。

これは、機能するはずの削除リンクです。

<%= link_to 'Destroy', @product, method: :delete, data: { confirm: 'Are you sure?' } %>

しかし、Destroy リンクをクリックすると、ユーザーのプロファイルに移動します。確認ウィンドウが表示されず、何も実行されません (削除)。同じページにとどまっているようです。私はFirefoxを使用していますが、IEとChromeは同じです。

これは私が持っているものです:

  1. gem「jquery-rails」がインストールされている

  2. applications.js (app/assets/javascripts から) には次の行があります。

    //= require jquery
    //= require jquery_ujs
    //= require_tree .
    
  3. application.html.erb (app/views/layouts から) には次の行があります。

    <%= javascript_include_tag "application" %>
    <%= csrf_meta_tags %>
    

    ソースを見ると、次のように表示されます。

    <script src="/assets/application.js?body=1" type="text/javascript"></script>
    <meta content="authenticity_token" name="csrf-param" />
    <meta content="MVlJi+WJE1cwWoHnBrpRWIa13gqio0iPT3IL6kpQYdE=" name="csrf-token" />
    
  4. products_controllers.rb (app/controllers から) に次のものがあります。

    def destroy
        @product = Product.where(:id => params[:id]).first
        @product.destroy
    
        respond_to do |format|
            format.html { redirect_to products_url }
            format.json { head :no_content}
        end
    end
    
  5. (構成から)routes.rbで私は持っています:

    resources :products
    

その Destroy リンクの何が問題になっていますか?

同じ RoR プロジェクトで、[編集] リンクは正常に機能します。

では、なぜリンクが機能しないのでしょうか。それは Javascript の問題ですか、それとも私が見ていない他の問題ですか?

そして、ここにサーバーのログがあります: (「削除」アクションは実行されていないようです)

Started GET "/products/9" for 127.0.0.1 at 2013-08-01 20:01:08 -0500
Processing by ProductsController#show as HTML
Parameters: {"id"=>"9"}
Product Load (0.1ms)  SELECT "products".* FROM "products" WHERE "products"."id" = 9 LIMIT 1
Rendered products/show.html.erb within layouts/application (0.5ms)
Completed 200 OK in 27ms (Views: 25.8ms | ActiveRecord: 0.1ms)
4

2 に答える 2

0

おそらく (私は推測に過ぎませんが、ある日、私は同様の問題に遭遇しました)、Rails を使用したアジャイル Web 開発という本に基づいてショッピング カートを使用してカタログまたはショッピングを設計する場合、製品モデルには、製品のアクセスbefore_destroy :ensure_not_referenced_by_any_line_itemを妨げるフィルターが含まれている可能性があります。に記載されている商品の場合は破棄してLineItemsください。このような場合はProductsController、製品を破棄する前に LineItems のリストをクリアできます。そうでなければごめんなさい。

于 2013-08-20T21:46:56.853 に答える