0

Show在 Rails 中有一个模型 (),可以通过子域而不是标准 REST URL 访问。在文件app/helpers/url_helper.rb中,我有以下方法:

def show_url(show)
  root_url(subdomain: show.subdomain)
end

在控制器中,这非常有效。我可以用它来测试它,它会按预期puts show_url(@show)输出节目的: 。然而,在集成测试中,该方法不起作用,而是使用 rails 生成的默认方法。如果我跑到那里,我只会得到. 如何在集成测试中使用此自定义 URL 帮助程序?subdomainhttp://test.example.computs show_url(@show)http://example.com

编辑:

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

4

2 回答 2

1

尝试在没有默认“显示”操作的情况下定义其路线:

# config/routes.rb
resources :show, except: :show

听起来有点令人困惑,因为您的模型被称为Show,但它所做的是定义所有标准的宁静路线(索引、新建、创建、编辑、更新、删除),除了“显示”,例如

或者另一种方式:

resources :show, only: %w(index new create edit update delete)
于 2015-07-20T16:04:48.213 回答
0

我真的会考虑做一些重构和重命名 Show 模型。

于 2015-07-20T16:14:04.777 回答