在浏览器中一切正常,但Rspec测试失败并显示以下消息:
的ActionController :: UrlGenerationError:
No route matches {:action=>"show", :controller=>"users", :id=>nil, :locale=>#<User id: 1, email: [...] } missing required keys: [:id]
我的测试失败:
subject {create(:client)} #from factory_girl
visit user_path(subject)
要通过测试,我必须明确写出id:visit user_path(id: subject)
奇怪的是,它之前一直很好,直到我为铁路等运行bundle update
。这个问题也出现在我的其他模型中(简介,工作等)。
我找不到解决办法,任何帮助都会非常感激。
编辑 routes.rb
Rails.application.routes.draw do
scope "(:locale)", locale: /en|fr/ do
# all my routes
end
end
application_controller.rb
before_action :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
def default_url_options(options = {})
{ locale: I18n.locale }.merge options
end