2015-03-19 35 views
0

我正在軌道上做一個簡單的待辦事項列表應用程序。如何在AJAX-ed元素上執行AJAX?

基本上,我已經在創建任務上實現了AJAX。但是,要關閉任務,它需要更新操作。我的目標是在創建一個使用AJAX執行的任務後,使用AJAX進行更新。現在我只能在刷新後用AJAX執行更新。

我在這裏有兩個單獨的js.erb文件,顯示相應操作的AJAX。

create.js.erb

<% if @item.valid? %> 
$('.item-form').html("<%= escape_javascript(render partial: 'items/form', locals: { list: @list }) %>");` 
$('.item-list').append("<%= j (render(@item)) %>"); 
<% else %> 
$('.item-form').html("<%= escape_javascript(render partial: 'items/form', locals: { list: @list }) %>"); 
<% end %> 

update.js.erb

<% if @item.completed? %> 
    $('#item-' + <%= @item.id %>).addClass("strikethrough"); 
<% else %> 
    $('#item-' + <%= @item.id %>).removeClass("strikethrough"); 
<% end %> 

Items_Controller

class ItemsController < ApplicationController 
    respond_to :html, :js 

    def create 
    @item = Item.new(item_params) 
    @user = User.find(params[:user_id]) 
    @item.user_id = @user.id 
    @item.save 

    respond_to do |format| 
     format.html 
     format.js 
    end 
    end 

    def update 
    @item = Item.find params[:id] 
    user = User.find params[:user_id] 
    @item.update(completed: params[:item][:completed]) 

    respond_to do |format| 
     format.html {render 'items/update.js.erb'} 
     format.js {render 'items/update.js.erb'} 
    end 
    end 

這裏是如果需要我的repo的鏈接。

回答

0

現在只代碼重構

<% if @item.valid? %> 
$('.item-form').html("<%= escape_javascript(render partial: 'items/form', locals: { list: @list }) %>");` 
$('.item-list').append("<%= j (render(@item)) %>"); 
<% else %> 
$('.item-form').html("<%= escape_javascript(render partial: 'items/form', locals: { list: @list }) %>"); 
<% end %> 

$('.item-form').html("<%= escape_javascript(render partial: 'items/form', locals: { list: @list }) %>"); 
<% if @item.valid? %> 
    $('.item-list').append("<%= j (render(@item)) %>"); 
<% end %> 

:)

而你回答: 我猜,你的JS功能沒有約束後創建,但relaod後它正在綁定的頁面

+0

謝謝!正如你所看到的,我完全是一個初學者:) 雖然我的問題的任何解決方案?或者,總的方向是什麼? – harrisonlo 2015-03-19 11:08:33

+0

我沒有給你準確的,你想要什麼:( – user3118220 2015-03-19 11:09:50

+0

我有另一個AJAX動作(update.js.erb)。但是,我不能在我的項目上執行,除非頁面刷新。刷新頁面? – harrisonlo 2015-03-19 11:12:13

相關問題