我在RoR应用程序视图中有以下代码行:

<%= button_to "Attend Event", attend_event_path(@event), :remote => true, :id => "attend", :class => "tester" %>


它生成以下代码:

<form class="button_to" method="post" action="/events/2/attend" data-remote="true">
    <input id="attend" class="tester" type="submit" value="Attend Event" />
    <input type="hidden" name="authenticity_token" value="1GDsVpuZ4nu3OqSUajEtv2gO4m1QASXcceKlw9FRjbMxKFIIYMr741fSVDA8VeXUAolGyY85d7LpvOjfhs4fVA==" />
</form>


现在,可以看到我的idclass放在了input标记中;我不能将它们放在form标记中。我需要一种从form标记中的/events/2/attend键中拔出action的方法,但是我无法添加ID来这样做,而document.getElementByClassName无法正常工作。

以前,我有一个链接而不是一个按钮,而document.getElementById("attend").getAttribute("href");是个窍门,但是我试图使用按钮而不是链接。

有人可以向我建议一些可以允许我获取action键值的Javascript代码(或一些可以让我向表单标签添加ID的红宝石代码)吗?我需要此值作为Ajax URL。

谢谢一堆

最佳答案

幸运的是,每个表单输入都有一个form成员,指向所有者“表单”,因此它变成:

var formAction = document.getElementById('attend').form.action;

这样做的好处是,您不必关心输入字段的嵌套方式,即,如果它不是表单的直接子元素,也没问题。

但是,最好的方法是将一个显式ID添加到这样的表单中:

form_for @model, html: { id: 'your-form-id' } do |f|

并像var formAction = document.getElementById('your-form-id').action;一样访问它

关于javascript - Javascript:从Ruby on Rails生成的按钮访问“操作”属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36000238/

10-17 02:54