如何不止一次调用ruby函数

时间:2015-08-14 22:04:52

标签: javascript jquery sql ruby-on-rails ruby

我有ruby文本从引号的SQL数据库中获取一个随机行, 然后我用javascript在按钮点击时显示这个随机引用: 我的问题是,每当按下按钮,我想生成一个新的随机引用。有人告诉我,我可以使用jquery做到这一点,但我对如何解决这个问题非常感到失望。有任何想法吗?谢谢!

在控制器中:

random_offset = rand(Quote.count - 1)
@random_quote = Quote.offset(random_offset).first

使用Javascript:

var generatedQuote = '"<%= @random_quote.quote %>" <br>  - <%= @random_quote.author %>'

function populateQuote(){
  $("#quoteArea").val(generatedQuote);
  $("#imagewrap h3").html(generatedQuote);
}

var quoteButton = document.getElementById('randomQuote');
quoteButton.addEventListener('click', function (){
  populateQuote();
});

1 个答案:

答案 0 :(得分:1)

您应该呈现所有引号并随机化客户端。 Javascript:

var quotes = <%= raw Quote.all.map {|q| [q.quote, q.author]}.to_json %>;
var random_quote = function(){
  var quote_item = quotes[Math.floor(Math.random()*quotes.length)];
  return '"'+quote_item[0]+'" <br>  - '+quote_item[1];
};

$("#randomQuote").click(function(){
  var new_random_quote= random_quote();
  $("#quoteArea").val(new_random_quote);
  $("#imagewrap h3").html(new_random_quote);
});

或者您应该在每次点击按钮时获取服务器,具体取决于可用的报价数量/您对网络应用的偏好。