删除Rails 3中的记录后,刷新的视图不会更新

时间:2011-06-29 21:35:56

标签: ruby-on-rails-3 rowdeleting

我正在处理基本的一对多关系,我正在删除多方面的记录。模型是“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

1 个答案:

答案 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中删除元素。