我在Rails中有一个模型(Show
),可以通过子域而不是标准REST URL访问。在文件app/helpers/url_helper.rb
中,我有以下方法:
def show_url(show)
root_url(subdomain: show.subdomain)
end
在控制器中,这非常有效。我可以使用puts show_url(@show)
对其进行测试,并按预期输出节目的subdomain
:http://test.example.com
。但是,在集成测试中,该方法不起作用,而是使用rails生成的默认方法。如果我在那里运行puts show_url(@show)
,我只会获得http://example.com
。如何在集成测试中使用此自定义URL帮助程序?
编辑:
关于此子域名的 routes.rb
部分:
constraints(lambda do |request|
request.subdomain.present? && request.subdomain != 'www'
end) do
get '/' => 'shows#show', as: :show
get '/edit' => 'shows#edit', as: :edit_show
end
这基于Railscast on subdomain matching。{/ p>
答案 0 :(得分:1)
尝试在没有默认“show”操作的情况下定义其路线:
# config/routes.rb
resources :show, except: :show
由于您的模型被称为Show
,所以听起来有点混乱,但它正在做的是定义除“show”之外的所有标准的restful路由(索引,新建,创建,编辑,更新,删除),例如< / p>
或另一种方式:
resources :show, only: %w(index new create edit update delete)
答案 1 :(得分:0)
我真的会考虑做一些重构并重命名Show模型。