如何在Ruby / Rails .each循环中调用特定的按钮实例时,它们都具有相同的类?

时间:2014-12-24 16:54:20

标签: javascript ruby-on-rails ruby

基本上,我的问题是当我让JS在.each循环中的rails-button上运行.click时,我需要一种方法来定位与触发脚本的同一帖子关联的特定按钮。

片段:

    <% @posts.each do |post| %>
         <td id=ahhu> <%= button_to 'Renew', [:renew, post], method: :post, class: 'my-target' %></td>

然后在JS:

$(document).ready(function(){

  var handler = x.configure({
    token: function(token) {
  $('.my-target').click();  
  $("form").append(tokenInput).append(emailInput).submit();



 }
  });

  $('.my-target').on('click', function(e) {
// Open Checkout with further options

handler.open({
  name: 'm'
});
e.preventDefault();

});

  $(window).on('popstate', function() {
handler.close();
  });
 });</script>

3 个答案:

答案 0 :(得分:2)

首先,每页的元素只能有一个ID。所以,迭代这些并给他们相同的ID&#34; ahhu&#34;毫无意义。按类选择它们。你可以使用Javascript&#34;这个&#34;使用JQuery的关键字,它将保持调用它的范围。例如,

<% @posts.each do |post| %>
     <td class="ahhu"> <%= button_to 'Renew', [:renew, post], method: :post, class: 'my-target' %>
</td>

然后,在JS中,您可以选择这样的特定帖子:

$('.ahhu').click(function() {
  $(this). // whatever you want to do here.
}

尝试执行&#34; console.log($(this))并在浏览器的控制台中查看。您会注意到范围会发生变化,并且只会针对您点击的特定帖子。你可以在&#34; my-target&#34;上做同样的事情。或者只是遍历DOM结构,直到你得到孩子&#34; my-target。&#34;这是一种更加动态的方式来处理javascript中的特定事件,而不是添加在迭代时数量增加的ID。

答案 1 :(得分:0)

我的一些代码

<input type="button" class="class1" value="123"/>
<input type="button" class="class1" value="456"/>     
list = document.getElementsByClassName('class1')

for (var i = 0; i < list.length; i++) {
    alert(list[i].value); // use your Js call here .
}

这应该开始......

答案 2 :(得分:0)

你无法通过Rails视图中的循环来处理这个问题,为每个按钮创建一个唯一的ID吗?

posts.each do |post|
  link_to post.name, id: "btn-#{post.id}"
end

如果不知道您是如何尝试在服务器端生成这些链接/按钮的话,很难给出正确的指导。