0
我有一個Rails 4安裝的發動機MyEngine
軌道4置發動機Rspec的網址添加PARAMS兩次
裏面一個lib
模塊我使用url_helper
來找到一個途徑。
MyEngine::Engine.routes.url_helpers.send("test_controller_url",{:id => 1, :lang => I18n.locale})
而且我與default_url_options
在spec/spec_helper.rb
這樣的配置rspec
。
class ActionView::TestCase::TestController
def default_url_options(options={})
{ :params => { :lang => I18n.default_locale }, :host => "test.host" }.merge options
end
end
class ActionDispatch::Routing::RouteSet
def default_url_options(options={})
{ :params => { :lang => I18n.default_locale }, :host => "test.host" }.merge options
end
end
所得url
我從通話期待是:
http://test.host/controller/1/test?lang=en
但我得到url
:
http://test.host/?lang=en/controller/1/test?lang=en
我做了一些調試到actionpack/action_dispatch/http/url.rb
在actionpack-4.0.1
rails
。
是前來url_for
方法的選項有:
{
:params=>{:lang=>:en},
:host=>"test.host",
:use_route=>"my_engine",
:only_path=>true,
:lang => :en,
:path=>"/",
:script_name=>nil,
:user=>nil,
:password=>nil
}
和
{
:params=>{:lang=>:en},
:host=>"test.host",
:action=>"test",
:controller=>"my_engine/controller",
:use_route=>"test_controller",
:only_path=>false,
:id=>1,
:path=>"/controller/1/test",
:script_name=>"/?lang=en",
:user=>nil,
:password=>nil
}
而在dummy
Rails應用程序內spec/dummy/config/routes.rb
我已經安裝了engine
有:
mount MyEngine::Engine, :at => "/"
它似乎產生畸形url
只有rspec
,甚至不與rails console
我也注意到,有對url_for
正在取得兩個電話,一個是engine
,一個用於實際path
。
我在這裏做錯了什麼?它是一個配置的東西還是有一個實際的錯誤?