我的 edit.html.erb 页面中有以下表格
<%= form_for(@device) do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :description %>
<%= f.text_area :description, :rows => "5" %>
<%= f.label :device_identifier %>
<%= f.text_field :device_identifier, :value => @device.device_identifier, :readonly => true, :class => "d-id", :id => "deviceIDfield" %>
<%= button_tag "New device identifier", :id => "deviceIDbutton", :class => "btn btn-small btn-inverse", :type => "button" %>
<%= f.submit "Save changes", :class => "btn btn-large btn-primary", :id => "white" %>
<% end %>
单击“新设备标识符”时,我希望 :device_identifier 字段重新生成其当前通过 Ruby 方法 SecureRandom.urlsafe_base64 设置的值。这只是生成一个随机的 base64 编码字符串。我一直在尝试通过 jQuery 来做到这一点,但是我遇到了麻烦,因为我对 Ruby on Rails 和 JQuery 都是新手。
我设置了一个名为 shared.js.erb 的文件,它位于我的 javascripts 目录中。在这里,我有以下代码...
$(document).ready(function(){
$('#deviceIDbutton').click(function () {
$("#deviceIDfield").val('<%= SecureRandom.urlsafe_base64 %>');
});
})
这在我第一次单击按钮时有效(即它使用新字符串更新 device_identifier 字段)但是在此之后停止工作。我认为这是因为 SecureRandom.urlsafe_base64 被调用一次(当文档准备好时......?)而不是每次单击按钮时。有人可以帮帮我吗!,我一直在努力解决这个问题太久了。
我很不确定一些事情,例如为什么我不需要在任何地方使用 :remote => true 以及如果我要使用它放在哪里?
此外,我绝不确定我对 jQuery 应该去哪里有正确的想法,虽然它似乎在我创建的 shared.js.erb 文件中工作,但如果有人可以推荐一种更好/更自然的方式会很好。
还值得一提的是,我的 new.html.erb 文件中有相同的按钮,我想应用相同的功能。
非常感谢!
本