Javascript 如何在Ruby嵌入式代码中使用html元素的值
我有以下代码:Javascript 如何在Ruby嵌入式代码中使用html元素的值,javascript,jquery,html,ruby-on-rails,ruby,Javascript,Jquery,Html,Ruby On Rails,Ruby,我有以下代码: <% @groups.each do |group| %> <tr> <td id="groupid"><%= group.id %></td> <td><a href="#dialog" name="modal"><%= group.title %></a></td> </tr> <% end %> <div id
<% @groups.each do |group| %>
<tr>
<td id="groupid"><%= group.id %></td>
<td><a href="#dialog" name="modal"><%= group.title %></a></td>
</tr>
<% end %>
<div id="boxes">
<div id="dialog" class="window">
<strong><%= @groups.find(3).title %></strong> |
<a href="#"class="close"/>Close it</a>
</div>
</div>
|
当我点击浏览器中的
链接时,我想获取存储在
中的值,并将其传递到
中,其中3是…因此,我将把值存储在
如何实现这一点?您不能直接将从javascript获得的值(通过
单击事件)传递给Ruby代码,因为当javascript代码运行时,Ruby已经完成了它的工作,并将html/js内容传递给浏览器。浏览器不能调用Ruby函数,它只能向服务器上的Ruby脚本发出新请求(例如,通过ajax)
现在,我再次查看了您的代码,您的HTML上似乎已经有了所有标题,因此您可以尝试以下方法:
<script type="text/javascript">
$(document).ready(function(){
$('td a').on('click', function(){
var title = $(this).html();
$('#dialog strong').html(title);
});
});
</script>
<table>
<% @groups.each do |group| %>
<tr>
<!-- id changed to class below; you can't have the same id multiple times -->
<td class="groupid"><%= group.id %></td>
<td><a href="#dialog" name="modal"><%= group.title %></a></td>
</tr>
<% end %>
</table>
<div id="boxes">
<div id="dialog" class="window">
<strong></strong> | <a href="#"class="close"/>Close it</a>
</div>
</div>
$(文档).ready(函数(){
$('td a')。在('click',function()上{
var title=$(this.html();
$('#dialog strong').html(标题);
});
});
|
注意:这个例子需要jQuery才能工作。你不能直接这样做,你必须使用Ajax请求一个单独的控制器操作,然后调用组。在那里找到。没有Ajax经验,不知道我会怎么做@bfavaretto是对的,有一点改进/机会。您无需单独使用javascript(或jQuery或CoffeeScript)向服务器发出请求即可完成此操作。。。假设您已经拥有要在某个属性或值中显示的数据。从设计的角度来看,如果您需要做一些“不应该”需要来自服务器的更多数据的简单事情,那么您需要弄清楚如何将它们传递到DOM,以便JS可以看到/访问它们。如果它们不只是“there”,您可以使用类似“data foo”的属性来保存“foo”的值。是的,例如,浏览器中已经呈现了一个数字,因此当我单击groupid旁边也呈现的标题时,我想获取groupid的值并将其发送给group。查找(--此处-)…感谢您的努力,但不幸的是,代码不起作用。另外,我并不是试图将值传递给元素,而是试图从中获取值并将其传递到数字3所在的位置!你知道为什么不可能吗?浏览器无法看到
,因此js也无法看到。您不是在尝试显示与单击的id关联的标题吗?为什么不从
的内容中获取它呢?它应该与
将返回的内容相同!这就是我不想只获取title的原因,我正在调用().title之外的其他方法。下面还有一些类似的行,例如。。。但是由于我不能在浏览器中实现这一点,我必须寻找一种通过服务器端实现的方法。。