我正在处理基本的一对多关系,我正在删除多方面的记录。模型是“places”和“search_terms”,其中places_many search_terms。当我创建新记录时,视图会更新,并且新的search_term会附加到列表中。但是,当我删除search_term记录时,即使删除了记录并运行Place的“show”方法,视图也不会刷新。
我对rails 3很新,所以无法弄清楚这里发生了什么......
干杯, Gearoid。
编辑:search_terms控制器销毁方法:
def destroy
@search_term = SearchTerm.find(params[:id])
@search_term.destroy
@place = Place.find(params[:place_id])
redirect_to place_path(@place)
end
场所控制器显示方法:
def show
@place = Place.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @place }
end
end
答案 0 :(得分:0)
我可能会误解你,你能发布你的控制器代码吗?
这是在ajax上发生的吗?如果没有,您是否可以重定向到Show
而不是仅重新呈现它?无论如何,这可能是用户的首选体验。
<强>更新强>
好的,如果这是通过ajax,那么问题很简单。您的destroy
操作只是期待正常的浏览器事件并进行redirect_to
调用。 ajax调用不知道如何处理它,只是坐在那里。您可以在Firebug中看到重定向代码。
我对jquery-rails并不是很熟悉(我更喜欢自己编写所有js因为我是肛门)。您可以让destroy
操作返回js格式,如下所示:
def destroy
@search_term = SearchTerm.find(params[:id])
@search_term.destroy
@place = Place.find(params[:place_id])
respond_to do |format|
format.html { redirect_to place_path(@place) }
format.js { render :nothing => true }
end
end
这将给ajax调用者一个ok信号,它已经完成了它的事情。你的javascript仍然需要智能地处理这个响应,比如从DOM中删除元素。