Ruby on rails 如果多个视图需要链接到销毁操作,该怎么办?

Ruby on rails 如果多个视图需要链接到销毁操作,该怎么办?,ruby-on-rails,Ruby On Rails,我不知道该怎么办。我有两个支架:组和用户。在两个不同的组视图中,我列出了组用户并调用users\u控制器的Destroy方法 由于第二个视图正在调用销毁操作,我需要某种方法来检测哪个视图称为销毁操作,因为我需要为两个组视图中的每个视图提供不同的重定向和自定义flash通知 有没有一种简单的方法可以解决这个问题,或者解决方法是复制销毁方法并为其映射新路径 -谢谢 编辑:也许这是个愚蠢的想法,但我在想。。。对于这两个涉及的视图,如果我在生成视图时将它们的视图名称存储在会话中(作为销毁操作的标志,以便

我不知道该怎么办。我有两个支架:组和用户。在两个不同的组视图中,我列出了组用户并调用users\u控制器的Destroy方法

由于第二个视图正在调用销毁操作,我需要某种方法来检测哪个视图称为销毁操作,因为我需要为两个组视图中的每个视图提供不同的重定向和自定义flash通知

有没有一种简单的方法可以解决这个问题,或者解决方法是复制销毁方法并为其映射新路径

-谢谢


编辑:也许这是个愚蠢的想法,但我在想。。。对于这两个涉及的视图,如果我在生成视图时将它们的视图名称存储在会话中(作为销毁操作的标志,以便知道要重定向到哪个视图以及要发送回哪个自定义flash通知)?

销毁方法不是很长,所以是的,继续复制它

如果是这样的话:

  # DELETE /users/1
  def destroy
    @user = User.find(params[:id])
    @user.destroy
    redirect_to users_url
  end

它不应该重复你自己,它最终会使你的代码更容易阅读

销毁方法不是很长,所以是的,继续复制它

如果是这样的话:

  # DELETE /users/1
  def destroy
    @user = User.find(params[:id])
    @user.destroy
    redirect_to users_url
  end

它不应该重复你自己,它最终会使你的代码更容易阅读

将参数与链接一起传递,并在操作中检查这些参数

link_to "Delete", :controller => "groups", :action => "destroy", :pass_par => "view1"

link_to "Delete", :controller => "groups", :action => "destroy", :pass_par => "view2"
控制器:

def destroy
  if params[:pass_par] == "view1"
    redirect_to view1 
  else
    redirect_to view2
  end
end

将参数与链接一起传递,并在操作中检查这些参数

link_to "Delete", :controller => "groups", :action => "destroy", :pass_par => "view1"

link_to "Delete", :controller => "groups", :action => "destroy", :pass_par => "view2"
控制器:

def destroy
  if params[:pass_par] == "view1"
    redirect_to view1 
  else
    redirect_to view2
  end
end

link_to的语法对我不起作用。我在其中一个视图中使用的是这样的(我还没有弄清楚如何传递一个额外的参数):“确定吗?”,:method=>:delete%>变量
:pass\u par
或类似
:return\u to
的更好的格式应该是url的一部分,而不是选项哈希,因此要正确地说明这一点,可以使用
“page1”),:confirm=>“确定吗?”,:method=>:delete)%>
(假设您使用的是命名/restful路由),或者使用答案中给出的语法将url指定为哈希
“groups”,:action=>“destroy”,:pass_par=>“view2”},:confirm=>“确定吗?”?“,:method=>:delete)%>
太棒了,谢谢。我想我是个白痴,需要用额外的参数映射一条路线。link_to的语法对我不起作用。我在其中一个视图中使用的是这样的(我还没有弄清楚如何传递一个额外的参数):“确定吗?”,:method=>:delete%>变量
:pass\u par
或类似
:return\u to
的更好的格式应该是url的一部分,而不是选项哈希,因此要正确地说明这一点,可以使用
“page1”),:confirm=>“确定吗?”,:method=>:delete)%>
(假设您使用的是命名/restful路由),或者使用答案中给出的语法将url指定为哈希
“groups”,:action=>“destroy”,:pass_par=>“view2”},:confirm=>“确定吗?”?“,:method=>:delete)%>
太棒了,谢谢。我想我是个白痴,需要用额外的参数来映射一条路线。复制逻辑从来都不是一个好主意,主要原则之一是保持代码干燥。我真的很喜欢这种方式,并按照它去做(除了复制代码)。事实上,我还没有处理过路线图的绘制,但我已经解决了,一切都正常了——谢谢你。酷。我认为您需要关注代码的枯燥性,但不要为了避免重复一行而添加if。欢迎来到stackoverflow!当你选择反应更好的答案时,点击“V”,这样你就传播了对名誉的热爱复制逻辑从来都不是一个好主意,其中一个主要原则是保持代码干燥。我真的很喜欢这种方式,并且一直这样做(把复制代码放在一边)。事实上,我还没有处理过路线图的绘制,但我已经解决了,一切都正常了——谢谢你。酷。我认为您需要关注代码的枯燥性,但不要为了避免重复一行而添加if。欢迎来到stackoverflow!当你选择反应更好的答案时,点击“V”,这样你就传播了对名誉的热爱