我有一个单页rails应用程序,它在一个名为_new_list.html的文件(一个使用AJAX添加的文本/模板类型的脚本)中创建一个项目和删除链接,如下所示:
<a href="/to_do_lists/<%= list.id %>" data-method="delete">Delete</a>
问题是,该链接将用户发送到/to_do_lists/(列表id),而不是停留在同一页面中。erb中的删除链接适用于加载了erb的现有项目,如下所示:
<%= link_to "Delete",
to_do_list_url(list),
:method => :delete,
:remote => true %>
不幸的是,我认为我必须使用,因为我不能在模板中放入任何rails代码。在不将用户发送到另一个页面的情况下删除项目的方法是什么?
修改控制器中的销毁方法,并删除重定向到路径
def destroy
@to_do_list = Todolist.find( params[:id] )
@to_do_list.destroy
#redirect_to this_path
#Remove the redirect_to
end
然后您可以让ajax从页面中删除元素
生成的链接和手动锚点标记之间的区别在于,锚点标记上缺少dataremote="true"属性。
此外,您可能希望通过指定名称(如render"partialname")来渲染同一个分部,而不是render:json。redirect_to会导致重定向,而render允许您停留在同一页面上,并将更新后的列表部分呈现为已删除的项目。