Ruby on rails Rails:从一个控制器操作重定向到另一个控制器操作(非GET)
我有一个GET路径,在渲染视图之前,控制器会检查可选参数。如果有,我想绕过渲染视图,直接重定向到另一个控制器操作。另一个操作是PUT路由,我意识到我们不能像重定向到GET路由那样简单地重定向到PUT路由 这大概是我到目前为止所尝试的,但我不知道如何调用重定向,因为PUT是不可能的。也许有一些不同的设计模式来处理这种行为?提前谢谢Ruby on rails Rails:从一个控制器操作重定向到另一个控制器操作(非GET),ruby-on-rails,routing,put,Ruby On Rails,Routing,Put,我有一个GET路径,在渲染视图之前,控制器会检查可选参数。如果有,我想绕过渲染视图,直接重定向到另一个控制器操作。另一个操作是PUT路由,我意识到我们不能像重定向到GET路由那样简单地重定向到PUT路由 这大概是我到目前为止所尝试的,但我不知道如何调用重定向,因为PUT是不可能的。也许有一些不同的设计模式来处理这种行为?提前谢谢 Controller actions: def foo if 'XYZ' # "redirect" to bar else ren
Controller actions:
def foo
if 'XYZ'
# "redirect" to bar
else
render 'view'
end
end
#bar is a PUT route
def bar
...
end
如果你有这样的酒吧活动路线
match '/controller/bar/' => 'controller#bar'
像这样修改它
match '/controller/bar/' => 'controller#bar' , :via => [:get,:post,:put]
如果您只想在满足条件的情况下使用bar方法
def foo
if 'XYZ'
bar
else
render 'view'
end
end
这将运行bar方法并利用其中的任何重定向。更可能的情况是,你想重新审视你想要实现的目标
如果你能提供更多的细节,那么你会得到更好的答案。这里有些东西闻起来很可疑。为什么要将PUT请求重定向到其他地方处理?也许你需要改变你的路线instead@yoavmatchulsky嗯,那可能有用。我想保留原来的PUT路径,因为它被应用程序的另一部分使用。它可能不枯燥,但您认为最好将PUT路由中的代码添加到if XYZ行下的foo?如果您使用的是RESTful rails体系结构,PUT请求应该更新对象或实体。如果不是这样的话,也许你可以提取一个新的表单对象。尝试阅读,因为我没有想到你可以像ruby对象一样简单地调用路由。谢谢为了澄清这一点,PUT仍然在对资源进行更新,然后它会在之后呈现一个视图。我只是想在满足条件的情况下绕过默认的视图渲染行为。抱歉,如果在OP中不清楚的话