【问题标题】:Javascript: Accessing 'action' attribute from Ruby on Rails-generated buttonJavascript:从 Ruby on Rails 生成的按钮访问“操作”属性
【发布时间】:2016-06-30 05:47:02
【问题描述】:

我的 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 标签中。我需要一种方法从表单标签中的action 键中提取/events/2/attend,但我无法添加 ID 来执行此操作,并且 document.getElementByClassName 不起作用。

以前,我使用的是链接而不是按钮,document.getElementById("attend").getAttribute("href"); 成功了,但我尝试使用的是按钮,而不是链接。

有人可以向我建议一些 Javascript 代码,让我可以获取 action 键的值(或者一些可以让我在表单标签中添加 ID 的 ruby​​ 代码)吗?我需要这个值作为 Ajax URL。

非常感谢

【问题讨论】:

  • 对您的要求感到困惑。您不需要 javascript 来获取操作。运行 rake 路线,你可以从那里得到它。

标签: javascript html ruby-on-rails forms button


【解决方案1】:

幸运的是,每个表单输入都有一个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;一样访问它

【讨论】:

  • 感谢您的回复!第一行代码就帮我搞定了!
【解决方案2】:

你可以从child'. If you were not usingjquery, then the purejavascript, you could use eitherparentNodeorparentElementto get theparent`遍历到parent

尝试以下方法:

var inputElement = document.getElementById("attend");
var formElement = inputElement. parentElement;
var formAction = formElement.action;

【讨论】:

  • 感谢您的回复!了解如何以这种方式遍历元素非常有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 1970-01-01
  • 1970-01-01
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多