1

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

Ruby on Rails jQuery 按钮单击填充 text_field

确认按照 Christian 在另一个问题中提到的方式或更简单的方式进行操作会很棒,并且示例代码将不胜感激。正如另一个问题中提到的,我对 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 回答 1

1

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

应用程序/资产/javascripts/devices.js:

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

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

应用程序/配置/路由.rb

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

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

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

def generate_device_id
 render :text=>SecureRandom.urlsafe_base64
end
于 2012-04-25T14:30:32.177 回答