【问题标题】:How to Display various JS alerts in a row using Ruby on Rails?如何使用 Ruby on Rails 连续显示各种 JS 警报?
【发布时间】:2013-07-24 11:51:01
【问题描述】:

我想连续显示各种 JS 警报。下面是我想要的一个例子:

def exec
  render :js => "alert('Exec function has started');" and return

  if was_executed_successful?
    render :js => "alert('Congratz! You're the champion');" and return
  else
    render :js => "alert('Loser!');" and return
  end
end

上面代码的问题是它只显示第一个警报。

我该怎么做才能显示所有这些?

【问题讨论】:

    标签: javascript ruby-on-rails


    【解决方案1】:

    Rahul 是在正确的轨道上,但就像他说的,每个动作只有一个渲染,所以我认为它必须是

    def exec
     js = "alert('Exec function has started');" 
    
     if was_executed_successful?
       js << "alert('Congratz! You're the champion')" 
     else
       js << "alert('Loser!')"
     end
     render :js => js
    end
    

    另外,它会一个接一个地显示两个警报;如果要显示 exec 函数的进度,解决方法就比较复杂了。

    【讨论】:

    • 我想我想要的是如你所说的那样展示进步。在另一个之后显示两个警报并不有趣。有趣的是在函数启动时显示一个,在函数结束后显示另一个。开始和结束之间的时间间隔可能很长。我能找到什么方法来显示进度?你知道吗?谢谢!
    • 在这种情况下,您希望将大部分方法移动到后台作业中。阅读delayed_job,并显示进度,请尝试polling
    【解决方案2】:

    一个控制器动作一次只渲染一个东西,所以你可以像这样修改你的代码:

    def exec
     js = []
     js << "alert('Exec function has started')" 
    
     if was_executed_successful?
       js << "alert('Congratz! You're the champion')" 
     else
       js << "alert('Loser!')"
     end
     render :js => js * ";"
    end
    

    【讨论】:

      猜你喜欢
      • 2022-08-06
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多