Ruby on Rails应用在遭受破坏后,如何处理重定向问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计361个文字,预计阅读时间需要2分钟。
我使用 `def destroy` 和 `Event.find(params[:id]).destroy` 来删除事件。我可以通过两个不同的视图删除一个项目。在一个视图中,它是一个项目列表,因为我可以使用 `return` 并重新添加它。
def destroy Event.find(params[:id]).destroy flash[:info] = "Event deleted" redirect_to :back end
我可以从2个不同的视图中删除一个项目.在一个视图中,它是一个项目列表,因此我可以使用:返回并重新加载同一页面.但是另一个删除是在要删除的项目的视图上,所以一旦它消失了,我想重定向到某个不同的地方.
我的问题是如何根据destroy方法的来源告诉Rails一个不同的redirect_to路径?
就像测试一样,我尝试使用基于html中的body类的if语句,但是实例变量没有被带入destroy方法(我假设),因为它不起作用.例如
def destroy if @body_class == 'one page' Event.find(params[:id]).destroy flash[:info] = "Event deleted" redirect_to :back elsif @body_class == 'a different page' Event.find(params[:id]).destroy flash[:info] = "Event deleted" redirect_to root_path end end 通过破坏链接传递参数.如果链接在列表中,如下所示:
<%= link_to 'destroy', event_path(event, :from=>"list"), :method=>:delete %>
如果在对象页面上:
<%= link_to 'destroy', event_path(event), :method=>:delete %>
在控制器中:
def destroy Event.find(params[:id]).destroy flash[:info] = "Event deleted" if params[:from]=='list' redirect_to :back else redirect_to root_url end
本文共计361个文字,预计阅读时间需要2分钟。
我使用 `def destroy` 和 `Event.find(params[:id]).destroy` 来删除事件。我可以通过两个不同的视图删除一个项目。在一个视图中,它是一个项目列表,因为我可以使用 `return` 并重新添加它。
def destroy Event.find(params[:id]).destroy flash[:info] = "Event deleted" redirect_to :back end
我可以从2个不同的视图中删除一个项目.在一个视图中,它是一个项目列表,因此我可以使用:返回并重新加载同一页面.但是另一个删除是在要删除的项目的视图上,所以一旦它消失了,我想重定向到某个不同的地方.
我的问题是如何根据destroy方法的来源告诉Rails一个不同的redirect_to路径?
就像测试一样,我尝试使用基于html中的body类的if语句,但是实例变量没有被带入destroy方法(我假设),因为它不起作用.例如
def destroy if @body_class == 'one page' Event.find(params[:id]).destroy flash[:info] = "Event deleted" redirect_to :back elsif @body_class == 'a different page' Event.find(params[:id]).destroy flash[:info] = "Event deleted" redirect_to root_path end end 通过破坏链接传递参数.如果链接在列表中,如下所示:
<%= link_to 'destroy', event_path(event, :from=>"list"), :method=>:delete %>
如果在对象页面上:
<%= link_to 'destroy', event_path(event), :method=>:delete %>
在控制器中:
def destroy Event.find(params[:id]).destroy flash[:info] = "Event deleted" if params[:from]=='list' redirect_to :back else redirect_to root_url end

