将JavaScript行为添加到Ruby代码中

Adding JavaScript behavior to Ruby code?

本文关键字:Ruby 代码 添加 JavaScript      更新时间:2023-09-26

这是我在Rails应用程序中用于delete操作的控制器代码。我没有为delete操作使用单独的视图。

def delete
    @industry = Industry.find(params[:id])
    @industry.destroy
    flash[:notice] = "Industry successfully deleted"
    redirect_to(:action => 'index')
  end

操作是在索引视图本身中触发和执行的,但是我希望添加两件事:

  1. 如何创建一个JavaScript警报,在删除对象之前警告用户?
  2. flash消息停留在索引页的顶部。如何添加JavaScript,使flash消息框在10秒后出现和消失?

基本上,我如何在Rails 4中拦截destroy动作?

10秒后移除闪光灯:

$('.your-alert-div').delay(10000).fadeOut(400); // The fadeOut is just a transition I added. you can do remove() instead

同样,你可以使用setTimeout。

window.setTimeout(function() {
  $(".alert").fadeTo(500, 0).slideUp(500, function(){
      $(this).remove();
  });
}, 6000);

要在用户删除某些内容之前通过JavaScript提醒用户,您可以对您的链接执行以下操作:

<%= link_to "Delete", object, :method => :delete, :data => { :confirm => "Are you sure?" } %>

alert与此动作无关。您需要在上一个页面中呈现该JavaScript,该页面向此操作发出请求。

当动作被调用时,提示用户已经太晚了。

通知同样与此操作无关。您需要一些JavaScript附加到您的布局,它使用setTimeout来隐藏通知元素,当它出现在DOM中时。