Ruby on Rails的jQuery的按钮,然后单击填充text_field
我在edit.html.erb页面下面的表格Ruby on Rails的jQuery的按钮,然后单击填充text_field
<%= 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文件中有同样的按钮,我想要应用相同的功能。
非常感谢!
本
正如你所说的,正在生成随机字符串只有一次,而不是在文件已准备就绪。当您的布局包含shared.js.erb时,它将在服务器端呈现。这种“创造”与内容的shared.js文件,如:
$(document).ready(function(){
$('#deviceIDbutton').click(function() {
$("#deviceIDfield").val('werwe87wer78we7w8erew');
});
})
当文档准备好被执行就绪()调用该函数并结合功能对被执行单击事件到#deviceIDbutton元素。所以,每次你点击你的按钮,执行相同的函数,一次又一次地设置相同的随机码。
你的函数应该对控制器中的一个方法进行远程调用,该方法返回一个新的安全随机码。你可以使用JQuery.get()来做到这一点。
如果代码只是一个随机生成的代码,您可以在浏览器中使用一些JavaScript生成,避免调用服务器端。
有关调用控制器方法的示例,您可以看到this other SO answer。
有关使用JQuery.get()调用控制器方法的一些示例代码的机会?谢谢 – user1344048 2012-04-19 14:25:33
为此添加了对其他SO线程的引用。让我知道如果你需要进一步的帮助 – Christian 2012-04-19 14:31:38
我仍然坚持这个问题......这种方法似乎有点冗长和不自然。我是否需要添加路线到我的路线文件?为什么使用jQuery填充点击文本框这么简单?有些东西看起来不正确。 – user1344048 2012-04-19 17:13:03