在Ruby代码中添加JavaScript行为?

时间:2014-03-12 15:56:35

标签: javascript ruby-on-rails ruby ruby-on-rails-4

这是我在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以便闪存消息框出现并在10秒后消失?
  3. 基本上,我如何拦截Rails 4中的destroy操作?

2 个答案:

答案 0 :(得分:2)

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?" } %>

答案 1 :(得分:1)

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

在调用操作时,提示用户为时已晚。

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