Использование rails3 и прототипа (rails.js)
У меня есть простой список продуктов с ссылками редактирования и удаления в виде изображений.При удалении товара список не обновляется.Обновление страницы показывает, что продукт действительно был удален.
/ app / views / products / list.rhtml
<div id="product_list">
<%= render :partial => 'list' %>
</div>
/ app / views / products / _list.rhtml
<%= link_to image_tag("delete.png"), { :controller => 'products', :action => 'destroy', :id => product }, :method => :delete, :confirm => "Are you sure?", :remote => true %>
/ app / controllers / products.rb
def destroy
Product.find(params[:id]).destroy
@products = Product.all
end
/ app / views / products / destroy.rjs (не уверен, что с этим делать ...)
$(document).ready(function() {
$("#product_list").html("<%= escape_javascript( render(:partial => "list") ) %>");
});
Так что удаленная ссылка, кажется, работает нормально.Я не уверен, как использовать обратный вызов ajax для обновления # product_list
Я пытался поместить в заголовок страницы следующее:
$(document).ready(function(){
$('#product_list').bind("ajax:success", function(evt, data, status, xhr){
alert('hello');
})
});
Но это не выполняется (это, вероятно,недопустимый код для прототипа), и я не знаю, какой код поместить внутрь, чтобы мой список обновлялся после уничтожения продукта
Любая помощь (кроме «use jQuery») очень ценится!
РЕДАКТИРОВАТЬ : Вот журнал сервера для действия удаления (после того, как я переместил вышеупомянутый javascript в destroy.js.erb)
Started POST "/products/destroy/3" for 127.0.0.1 at .....
Processing by ProductsController#destroy as JS
Parameters: {"_"=>"", "id"=>"3"}
[1m[36mProduct Load (0.0ms)[0m [1mSELECT `products`.* FROM `products` WHERE (`products`.`id` = 3) LIMIT 1[0m
[1m[35mSQL (0.0ms)[0m BEGIN
[1m[36mSQL (0.0ms)[0m [1mDELETE FROM `products` WHERE (`products`.`id` = 3)[0m
[1m[35mSQL (78.1ms)[0m COMMIT
[1m[36mProduct Load (0.0ms)[0m [1mSELECT `products`.* FROM `products`[0m
Rendered products/destroy.js.erb within layouts/standard (31.2ms)
Completed 200 OK in 312ms (Views: 62.5ms | ActiveRecord: 78.1ms)
ОбработкаProductsController # уничтожить как JS , чтобы удаленная связь работала
[36 м. Загрузка продукта (0,0 мс) [0 м [1 мSELECT products
. ОТ products
* @products = Product.all выполняется
Рендеринг products / destroy.js.erb в макетах / стандарт * рендеринг javascript fie
Так что теперь я думаю, что это проблема с кодом javascript:
$ (документ) .ready (function () {$ ("# product_list"). Html ("<% = escape_javascript (render (: частичный =>" список "))%>");});
Этот тип кода поддерживается прототипом?Я не использую jQuery ...