我有一个嵌套的路由:
resources :period_registrations do
member do
post :save_period
end它指向我的控制器操作:
def save_period
@period_registration = PeriodRegistration.new(params[:registration])
@period_registration.save
redirect_to root_path
end我有个测试:
test "should get save_period" do
sign_in(FactoryGirl.create(:user))
assert_difference('Event.count') do
post :save_period, period_registration: FactoryGirl.attributes_for(:period_registration)
end
assert_not_nil assigns(:period_registration)
assert_response :success
end运行时会生成以下错误:
1) Error:
test_should_get_save_period(PeriodRegistrationsControllerTest):
ActionController::RoutingError: No route matches {:period_registration=>{}, :controller=>"period_registrations", :action=>"save_period"}在我看来奇怪的是:period_registration是空的。应该是这样吗?我该如何解决这个问题呢?
发布于 2012-08-23 02:44:27
应该为collection定义post,即您需要更改路由:
post :save_period, :on => :collection而不是member块。例如,rails内置的create (由resources生成)方法也绑定到一个集合。
其他注意事项:
你有一个错误在你的控制器中:should post save_period,但应该是
should get save_period =>https://stackoverflow.com/questions/12079027
复制相似问题