首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输出原始javascript的RJS方法

输出原始javascript的RJS方法
EN

Stack Overflow用户
提问于 2009-05-12 21:10:42
回答 3查看 809关注 0票数 0

我有一个页面,我从一系列选择框中动态地将元素添加到中。我正在使用RJS来做这件事,它工作得很好。现在,div中的这些元素是一系列带有Delete按钮的元素,以防用户想要删除文本区域。这就是我碰壁的地方。

下面是运行Delete按钮的代码。据我所知,这工作得很好:

代码语言:javascript
复制
<%= link_to image_tag("/images/button_delete.gif", :alt=>"Delete"), :controller=>"report", :action=>"remove", :id=>@sentence.id %>

在我的报表控制器中,上面的代码调用了这个非常简单的方法:

def remove @sentence_id =参数:id结束

再说一次,我认为这是有效的。现在,当我通过点击按钮激活这个动作时,我们转到RJS文件remove.rjs:

代码语言:javascript
复制
page.remove 'sentence_'+@sentence_id

这是我在浏览器中得到的东西,而不是一个愉快地删除的元素!

代码语言:javascript
复制
try 
{
     Element.remove("sentence_63");
} 
catch (e) 
{ 
     alert('RJS error:\n\n' + e.toString()); 
     alert('Element.remove(\"sentence_63\");'); 
     throw e; 
}

我的理解是,当当前上下文中没有页面时,就会发生这种情况。关于这一点的在线文档很少。

感谢任何人的帮助!干杯,亚伦。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-12 22:13:03

由于您的remove函数似乎并不实际删除记录,因此如果您只是想从页面中删除一个HTML元素,那么您可以将link_to_function与元素的原型remove() method一起使用。此外,如果您使用的是最新版本的sentance_id (例如,2.3.2),则可以利用dom_id helper自动生成Rails ID属性

<%= link_to_function(image_tag("button_delete.gif", :alt=>"Delete"), "$('#{dom_id(@sentence}').remove();" %>

这样的方法可以帮助减少控制器中方法的数量(除非您打算在控制器中执行其他操作)。

票数 0
EN

Stack Overflow用户

发布于 2009-05-12 21:46:08

尝试链接到远程。这将为您构建ajax调用,并应从页面中删除该元素。

因此,link_to_remote语法与link_to语法略有不同,所以也不要让它给您带来麻烦。

票数 1
EN

Stack Overflow用户

发布于 2009-05-12 22:04:43

您的删除链接被设置为普通链接,即

代码语言:javascript
复制
<a href="/report/remove" id="sentence_63">
  <img src="/images/button_delete.gif" alt="Delete" />
</a>

这会触发一个正常的HTTP请求。由于您的意图是触发AJAX请求,请尝试PJ Davis的建议并使用link_to_remote

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/854892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档