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

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

Ruby on Rails jQuery按钮单击填充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。 我对这个过程有点不确定,因为我需要在新页面和编辑页面中使用类似的function,所以一个全局jQuery函数会更好。
  3. 如果通过jQuery从控制器调用方法是正确的方法,有人可以提供一些示例代码,说明这是如何完成的,因为我在尝试时没有运气。 如果可以从js.erb文件调用SecureRandom.urlsafe_base64,并且每次单击按钮时都会更新字段,这将是理想的。

从另一个问题可以看出,我得到了一些工作,但我现在陷入困境,而且变得非常绝望。

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

万分感谢!

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

应用程序/资产/ Java脚本/ 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