我有一个页面,我从一系列选择框动态添加元素。我正在使用RJS来做这件事,而且效果很好。现在,div中的这些元素是一系列伴随Delete按钮的元素,以防用户想要删除textarea。这就是我撞墙的地方。
这是运行“删除”按钮的代码。这对我的知识很有用:
<%= link_to image_tag("/images/button_delete.gif", :alt=>"Delete"), :controller=>"report", :action=>"remove", :id=>@sentence.id %>
在我的报告控制器中,我已经通过上面的代码调用了这个非常简单的方法:
def删除 @sentence_id = params [:id] 端
同样,我认为这是有效的。现在,当我按下按钮激活此操作时,关闭我们转到RJS文件,remove.rjs:
page.remove 'sentence_'+@sentence_id
这就是我在浏览器中获得的内容,而不是一个快乐删除的元素!
try
{
Element.remove("sentence_63");
}
catch (e)
{
alert('RJS error:\n\n' + e.toString());
alert('Element.remove(\"sentence_63\");');
throw e;
}
我的理解是当当前上下文中没有页面时会发生这种情况。关于此的在线文档很简单。
任何帮助表示赞赏! 干杯, 亚伦。
答案 0 :(得分:1)
尝试链接到远程。这将为您构建ajax调用,并应从页面中删除该元素。
然后link_to_remote语法与link_to语法略有不同,所以不要让它绊倒你。
答案 1 :(得分:0)
您的删除链接设置为普通链接,即
<a href="/report/remove" id="sentence_63">
<img src="/images/button_delete.gif" alt="Delete" />
</a>
触发正常的HTTP请求。由于您的意图是触发AJAX请求,请尝试PJ Davis的建议并使用link_to_remote
答案 2 :(得分:0)
由于您的remove
功能似乎没有真正删除记录,如果您只想从页面中删除HTML元素,则可以使用原型remove()
method的link_to_function
元素。此外,如果您有最新版本的Rails(例如,2.3.2),则可以利用dom_id
helper自动生成sentance_id
ID属性
<%= link_to_function(image_tag("button_delete.gif", :alt=>"Delete"), "$('#{dom_id(@sentence}').remove();" %>
这样的方法可以帮助控制控制器中的方法数量(除非您打算在控制器中执行其他操作)