2015-04-21 2 views
2

У меня есть две функции обратного вызова бок о бок, и они, похоже, выполняют то же самое. Однако первый работает, а второй - нет - он даже не выполняет javascript, хотя файл IS отображается.Javascript не выполняется при обратном вызове для Rails?

Вот функция, которая не работает - в частичном:

<%= button_to 'Delete', todo_path(@item.id, :format => :js,), 
       :method => :delete, 
       :remote => true, 
       :form => { "data-type" => "js" }, 
       :form_class => "btn btn-danger btn-xs" %> 

В контроллере:

def destroy 
    @item_id = params[:id] 
    if item = Item.find_by_id(@item_id) 
     item.destroy 
    end 

    respond_to do |format| 
     format.js {} 
    end 
    end 

На обратном вызове (в Todos/destroy.js.erb):

alert("foobaz"); 
console.log("baz-foo"); 
$("#item_<%= @item_id %>").remove(); 

Метод и частичные визуализируются, но javascript не выполняется (нет предупреждения, нет журнала консоли и нет d Элемент статьи):

Started DELETE "/todos/73.js" for ::1 at 2015-04-20 20:24:37 -0700 
Processing by TodosController#destroy as JS 
    Parameters: {"authenticity_token"=>"sKfPWYP4owepOSDKBtTAoUMN4cVez/d5rz7k+UV0BY9Eu3Qkv/loiSpg4E6hN8Jmqih0+1v0WUROjL8h8IBnyQ==", "id"=>"73"} 
    Item Load (4.5ms) SELECT `items`.* FROM `items` WHERE `items`.`id` = 73 LIMIT 1 
    Rendered todos/destroy.js.erb (0.4ms) 

Мысли?

UPDATE

Я просто добавил некоторые отладки Рубин в:

<% print "HERE I AM" %> 

И распечатаны. Таким образом, шаблон визуализируется, и это просто javascript не вызывается. Еще не решение :(

Кроме того, во всех отношениях я могу сказать, это выглядит только как другая функция, кроме этого времени оказывается в частичном.

+0

Можете ли вы создать jsFiddle или по крайней мере предоставить нам HTML и JavaScript вместо Ruby – Tushar

+0

Привет - Javascript - это третий блок. Он не выполняется вообще. – aronchick

+0

Избавьтесь от ваш блок response_to в вашем контроллере .. в вашем случае он ничего не делает (и я полагаю, что {}) поглощает ваш ответ. –

ответ

2

Большого спасибо к fylooi для предложение об отладке! Оказывается, выполняется javascript WAS, но просто ссылается на неправильный элемент на странице. Очень рекомендуется использовать Firebug (а не встроенные отладчики). Спасибо!