2013-05-12 4 views
0

У меня есть действие контроллера:Действия контроллера не вызывается с помощью Javascript

def delete_image 
@pictureup = Pictureup.find(params[:id]) 

@pictureup.remove_image! 

respond_to do |format| 
    format.html { redirect_to root_url, notice: "Bild wurde gelöscht." } 
    format.json { head :no_content } 
end 
rescue ActiveRecord::RecordNotFound 
    redirect_to root_url, notice: "Bild gelöscht." 
end 

Маршрут:

match "delete_image/:id" => "pictureups#delete_image", :as => 'delete_img' 

и рабочие генерироваться Link, до тех пор, как я сам нажмите на него:

<a href="/delete_image/157931" data-confirm="Are you sure?" id="alert">Delete</a> 

Если я пытаюсь сделать

jQuery(document).ready(function() { 
jQuery('#alert').click(); 
}); 

Диалог данных подтверждения отображается, но действие контроллера не не вызывается (без редиректа, нет «image_delete»)

Любые идеи, почему? Если я попробую с одним из CRUD-действий в моем контроллере работать без проблем.

+0

Вы пытались вызвать 'jQuery ('# alert'). Click();' в консоли JS браузера? –

+0

Да, ничего не происходит. – suddenbreak

ответ

0

:confirm в вас link_to помещает data-confirm в ссылку при визуализации страницы. Это заставляет вещи jQuery-ujs Rail's связывать Javascript confirm по ссылке. Если вы проверите источник jQuery-ujs, вы увидите, что если confirm будет успешным, скрытая форма будет отправлена ​​по URL-адресу в link_to.

Итак, самое легкое, что вам нужно сделать, это удалить :confirm и сделать все это в jQuery самостоятельно. Для обычного «нажатия на ссылку» вы можете привязать свой собственный confirm к click и вызвать другую функцию, если подтверждение подтверждено. Если вы хотите просто удалить событие, используя jQuery, просто вызовите эту вторую функцию напрямую.

+0

Он все еще не работает без подтверждения. – suddenbreak

0

Ok получил установленное

Измененный маршрут:.

resources :pictureups do 
    member do 
    delete :delete_image 
    end 
    end 

Изменен вид:

<%= link_to "Delete", delete_image_pictureup_path(@pictureup), method: :delete, :id=>"delete_img" %> 

и ТЬ e JS:

jQuery('#delete_img').click(); 

Таким образом, похоже, что это связано с маршрутизирующими и вызывающими глаголами.

Смежные вопросы