0

レール3.1があり、削除操作にajaxを使用すると、ページが手動で更新されずに更新されたコンテンツを表示していません。レールでajaxを呼び出すと、ページに更新情報が表示されない

奇妙なことは、すべての.js.erbコードが正しく発射されているようです。私もdestroy.js.erbに単純なpage.alert( 'hi')を入れてみましたが、削除後には警告が出ません。私は、jQueryを動作させるためにajax用の「スクリプト」タグを追加することについて言及している場所をいくつか見てきましたが、最新のチュートリアルでは言及していません。私はあなたの助けに感謝します。ここで

は、私は、サーバーログに見えるものです:destroy.js.erbの

... 
<tr id = "category_35"> 
    <td>High-end products</td> 
    <td class="deletebutton"><a href="/categories/35" data-confirm="Are you sure?" data-method="delete" data-remote="true" rel="nofollow">Delete</a></td> 
    </tr> 

<tr id = "category_36"> 
    <td>Economy products</td> 
    <td class="deletebutton"><a href="/categories/36" data-confirm="Are you sure?" data-method="delete" data-remote="true" rel="nofollow">Delete</a></td> 
    </tr> 

内容:ここで

Started DELETE "/categories/35" for 127.0.0.1 at 2011-12-19 12:58:15 -0500 
    Processing by CategoriesController#destroy as JS 
    Parameters: {"id"=>"35"} 
    User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = 5 LIMIT 1 
    Category Load (0.3ms) SELECT "categories".* FROM "categories" WHERE "categories"."user_id" = 5 AND "categories"."id" = ? LIMIT 1 [["id", "35"]] 
    SQL (0.5ms) DELETE FROM "categories" WHERE "categories"."id" = ? [["id", 35]] 
Rendered categories/destroy.js.erb (0.5ms) 
Completed 200 OK in 161ms (Views: 30.7ms | ActiveRecord: 3.2ms) 

は私が生成されたHTMLページの出力ページのソースで見たものです:Gemfileで

('#<%= dom_id(@category) %>').fadeOut(700); 

categories_controller.rbで
gem 'jquery-rails' 

:APP /ビュー/カテゴリ

def index 
     @categories = current_user.categories.all 
    respond_to do |format| 
     format.html # index.html.erb 
     format.json 
     format.js 
    end 
    end 

    def destroy 
     @category.destroy 

    respond_to do |format| 
     format.html { redirect_to categories_url } 
     format.js { 
      render :template => 'categories/destroy.js.erb', :layout => false 
     } 
    end 
    end 

部分_categories_list.html.erbで/ index.html.erb

<h2>Categories</h2> 
<table name="categories_list"> 
<%= render "categories_list" %> 
</table>  
<br /> 

<% @categories.each do |category| %> 
    <tr id = "<%= dom_id(category)%>"> 
    <td><%= category.name %></td> 

    <td class="deletebutton"><%= link_to 'Delete', category, confirm: 'Are you sure?', method: :delete, :remote => true %></td> 
    </tr> 
<% end %> 
+0

あなたのajaxコールはどのように見えますか – Rafay

+0

私は別のajaxコールコードを入れていません。私は控えめな方法を使用しています。ご覧のとおり、私は削除ボタンに:remote => trueを入れます。それは役に立ちますか? – Tabrez

+0

@ 3nigma、application.jsにセットアップコードを追加する必要はありますか?私はいくつかの古いチュートリアルにajaxの設定について言及していますが、最新のレール3.1でそれを必要としていますか? – Tabrez

答えて

1

誰かがこの質問に遭遇した場合に備えて、私は解決策を共有したいと思っていました。意味の3つの事柄がありました。

  1. $ sign in destroy.js.erbがありませんでした。以下は修正されたコードです:

    $( '#<%= dom_id(@category)%>')fadeOut(700);

  2. また、コントローラーは、.jsに応答するときにデフォルトのレイアウトを使用しないように指示する必要があります。これは、アプリケーションコントローラ自体で行うことができます。しかし、私は次のようにカテゴリコントローラでそれを行いました:

    respond_to do | format | format.html {redirect_toのcategories_url} format.json format.js {レンダリング "破壊":レイアウト=>偽}形式の

  3. また、反復中一点で、私は混乱していたformat.json。 js。彼らは2つの異なるものです! RoRの新機能なので、ajax呼び出しに対する応答はjsonになり、format.jsonはformatに似ていると考えました。 js。 https://github.com/markusproske/ajax_demo/tree/jquery

    私はそれが私のために動作させるためにしなければならなかった追加の変更がレイアウトを無効にした

最後に、私はでgithubの上でAjaxのデモを共有マークに叫ぶを与える必要がありますレンディション。それ以外の場合は、そのデモは徹底的です。私はまだjs呼び出しのエラー状態を処理することに目を向けています。

関連する問題