Javascript I';我想更改一个<;音频>;无需重新加载页面

Javascript I';我想更改一个<;音频>;无需重新加载页面,javascript,jquery,ruby-on-rails,audio,Javascript,Jquery,Ruby On Rails,Audio,我正在使用rails 4和javascript作为个人web应用程序。问题是: 我想在单击时随机更改的值。 为了生成的路径,我使用一个ruby函数从数据库返回声音的值。我想做的是点击,每次点击时,的值都会改变,而不会重新加载页面。 下面是一个例子: <button> Click me!</button> <audio><source src="<%= $soundpath %>"></audio> /* I click on

我正在使用rails 4和javascript作为个人web应用程序。问题是: 我想在单击
时随机更改
的值。 为了生成
的路径,我使用一个ruby函数从数据库返回声音的值。我想做的是点击
,每次点击
时,
的值都会改变,而不会重新加载页面。 下面是一个例子:

<button> Click me!</button>
<audio><source src="<%= $soundpath %>"></audio>
/* I click on the button and the sound path into src="" should change everytime i click on the button without reloading the page*/
<audio><source src="<%= $soundpath %>" <--[this should be different from the previus one]></audio>
点击我!
/*我点击按钮,进入src=”“的声音路径应在每次点击按钮时更改,而无需重新加载页面*/

使用jquery的AJAX函数请求一个URL,该URL将以文本响应,以将src设置为:

在javascript文件中:

$("button").click(function() {
  $.get( "/sounds/next_source", function( data ) {
    $( "audio" ).attr( "src", data );
  });
}
然后确保为该操作设置了路由,然后在控制器中实施:

def next_source
    @src = Sound.last.url

  respond_to do |format|
    format.html {render :plain => @src }
  end
end

好的,很抱歉,现在我将更改我的请求XD我想从控制器调用一个ruby函数到javascript函数,如函数f1(){if(s==true)/*我想从控制器调用ruby函数*/},而不必在clickMy answer上重新加载页面。它对要将src设置为的新字符串发出异步请求。如果希望由于If语句而导致AJAX请求发生,那么将第1行更改为If语句。