Ruby on Rails按钮单击以使用jQuery填充text_field

时间:2012-04-25 12:35:53

标签: jquery ruby-on-rails textbox buttonclick

我正在尝试使用jQuery点击按钮填充text_field并提出一些问题。我在这里发布了一个关于此的问题,但不确定提供的答案,因为它看起来过于复杂(可能是正确的,但我对实施没有好运)......

Ruby on Rails jQuery button click populate text_field

确认按照基督徒在其他问题中提到的方式或更简单的方式来做这件事会很棒,并且会非常感谢示例代码。正如在另一个问题中提到的,我对ROR和jQuery都很新。

关于这个问题的更多信息......

该按钮在new和edit.html.erb中都会退出,并且位于text_field旁边的form_for块中(我有一个单独的按钮来提交表单)。我希望能够使用Ruby方法SecureRandom.urlsafe_base64填充该字段。

  1. 我使用button_tag是否正确?
  2. javascript文件应该放在哪里,我已经阅读了一些有关此内容,并且有人提到创建edit.js.erb文件并让控制器也响应javascript。我对这个过程有点不确定,因为我需要在新页面和编辑页面中使用类似的功能,所以一个全局的jQuery函数会更好。
  3. 如果通过jQuery从控制器调用方法是正确的方法,有人可以提供一些示例代码,说明这是如何完成的,因为我在尝试时没有运气。如果可以从js.erb文件调用SecureRandom.urlsafe_base64,并且每次单击按钮时都会更新字段,这将是理想的。
  4. 从另一个问题可以看出,我得到了一些工作,但我现在陷入困境,而且变得非常绝望。

    我将不胜感激任何帮助和示例代码。

    非常感谢!

1 个答案:

答案 0 :(得分:1)

我假设你已经包含了jQuery并且已经正常工作了。尽管如此,为了简单起见,将此javascript放在app / assets / javascripts / devices.js中。如果这样做,请确保同一目录中的application.js包含“// = require_tree。”(它将引入该目录中的所有文件,包括您刚创建的文件。)最重要的是,确保包含“ application.js“在正在呈现的布局中。 (可能是app / views / layouts / application.html.erb)

应用程序/资产/ Javascript角/ devices.js:

$(function(){
  $("#deviceIDbutton").click(function(e){
      $.get("/generate_device_id", function(data){
      $("#deviceIDfield").val(data);
    });
    e.preventDefault();
  })
})

然后,添加路由,以便AJAX调用知道要调用的控制器和操作...

应用程序/配置/ routes.rb中

get '/generate_device_id', :to=>"devices#generate_device_id"

然后,添加将调用您要求的SecureRandom方法的控制器操作...

应用程序/控制器/ devices_controller.rb

def generate_device_id
 render :text=>SecureRandom.urlsafe_base64
end