Rails:从一个控制器动作重定向到另一个(非GET)

时间:2014-01-02 07:33:47

标签: ruby-on-rails routing put

我有一个GET路由,在渲染视图之前,Controller会检查一个可选的参数。如果它在那里,我想绕过渲染视图并“直接”重定向到另一个控制器动作。另一个动作是PUT路由,我意识到我们不能简单地重定向到PUT路由,就像你可以到GET路由一样。

这大致是我到目前为止所尝试的但我不知道如何调用重定向,因为PUT是不可能的。也许有一些不同的设计模式来处理这种行为?提前谢谢。

Controller actions:

def foo      
  if 'XYZ'
    # "redirect" to bar
  else
    render 'view'
  end
end

#bar is a PUT route
def bar 
  ...
end

2 个答案:

答案 0 :(得分:0)

如果您有bar行为的路线

match '/controller/bar/' => 'controller#bar'

一样修改它
match '/controller/bar/' => 'controller#bar' , :via => [:get,:post,:put]

答案 1 :(得分:0)

如果您只想在满足条件的情况下使用bar方法

def foo      
  if 'XYZ'
    bar
  else
    render 'view'
  end
end

这将运行bar方法并使用您在那里的任何重定向。您更有可能想要重新审视您想要实现的目标。

如果你能提供更多细节,那么你会得到更好的答案。