如何将路径字符串转换为控制器+动作+参数?

时间:2012-04-13 16:45:00

标签: ruby-on-rails-3 routing actioncontroller actiondispatch

(我确定我已经看到了答案,但经过几分钟的挖掘后却找不到它。应该很容易回答......)

动机

在控制台中,您可以使用路径参数调用get方法,例如:

app.get posts_path(321)

这会调用ActionDispatch::Integration::RequestHelpers#get,它将“/ posts / 321”转换为适当的控制器以及操作和参数,例如: {:controller => “posts”,:action => “show”,:id => “321”}。

但你不能在控制器测试中这样做。要获得相同的效果,您需要:

get :show, :id => "321"

这是因为get方法是由ActionController::TestCase#get定义的,它期望已经解析出动作和参数。

我可以在手动填写的地方编写我的测试:controller,:action和任何参数,但这似乎是引入错误的好方法。

问题

是否有方法将字符串解析(例如调用posts_path(321))到适当的:controller,:action和参数,适合传递给ActionController::TestCase#get

这将使编写测试更简单,更不容易出错。

[编辑:我意识到你需要HTTP动词(get)以及路径(/posts/321)来唯一地映射到:controller和:action,但问题仍然存在。 ..]

0 个答案:

没有答案