加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 破坏后Rails重定向

发布时间:2020-12-17 01:30:08 所属栏目:百科 来源:网络整理
导读:我有 def destroy Event.find(params[:id]).destroy flash[:info] = "Event deleted" redirect_to :backend 我可以从2个不同的视图中删除一个项目.在一个视图中,它是一个项目列表,因此我可以使用:返回并重新加载同一页面.但是另一个删除是在要删除的项目的
我有

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读