代码之家  ›  专栏  ›  技术社区  ›  mwilliams

多个视图上的同一部分返回到从中调用它的任何视图

  •  0
  • mwilliams  · 技术社区  · 17 年前

    查看A

    视图B

    该部分属于模型A,但与模型B关联,因此也适用于模型B。

    它现在重定向到视图的原因是因为该表单所属的模型。因此,当发布时,它与控制器A对话,并使用重定向将用户带到一个url。

    我如何告诉我的表单(或者更多的控制器操作)将用户重定向回他们的来源?

    2 回复  |  直到 5 年前
        1
  •  2
  •   mwilliams    17 年前

    解决了的。

    我在表单中添加了一个隐藏字段,其中包含渲染部分的控制器名称,然后我的respond_to block决定将用户发送到哪里。

    查看代码:

    <%= hidden_field_tag 'submitted_from', "#{controller.controller_name}" %>
    

    我的控制器代码:

    if params[:submitted_from] == 'A'
      redirect_to a_url
    else
      redirect_to b_url
    end
    
        2
  •  0
  •   Josh Delsman    17 年前

    您可能希望将其放置在会话中,而不是使用隐藏标记:

    session[:submitted_from] = new_model_url
    

    redirect_to(session[:submitted_from])
    session[:submitted_from] = nil
    

    切换表单变量非常容易,而伪造会话可能更难(但并非不可能)。如果这是我的申请,我会走这条路。