我希望我的用户做
POST /controllername/v1
{
"p2":"v2",
"p3":"v3"
}
并安排POST到达 Controller “controllername”作为
params={ :p2 => "v2", :p3 => "v3" }
p1=v1
或者,实际上,我可以使用 Controller 的任何其他外观;关键是 URL 中的最后一个词(“v1”)需要提供给 Controller 以供 Controller 使用,这与 p2/v2 和 p3/v3 非常相似。
而且,我需要用 Rpec 测试这个。具体来说:
rspec 2.6.4
rails 3.0.9
ruby 1.9.2
我正在使用路线
match '/controllername/:p1' => 'controllername#create'
这个 rspec 规则有效:
it 'should route to :create' do
assert_routing({ :path => '/controllername/foofoo',
:method => :post },
{ :controller => "controllername",
:action => 'create',
:p1 => 'foofoo' })
end
但我不知道如何发布到它(从 Controller 规范)。这些都不起作用:
post :create, parameters
post :create, parameters, 'foofoo'
post :create, parameters, :p1 => 'foofoo'
post :create, :p1 => 'foofoo', parameters
最佳答案
对于您的示例:
内controllername_controller_spec.rb
post :create, :p1 => "foo", :p2 => "bar", :p3 => "baz"
本质上,只需将路径中的所有参数和您希望在请求正文中提供的参数放在一起
关于ruby-on-rails - Rspec+Rails : POST URL-parameter to controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9613437/