1

我正在处理一个基本的一对多关系,我正在删除多方面的记录。模型是“places”和“search_terms”,其中places has_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
4

1 回答 1

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

于 2011-06-29T21:45:52.340 回答