0

在Passenger for Apache 上运行Rails 3.2.13。我的虚拟主机:

<VirtualHost *:80>
ServerName server
DocumentRoot /srv/http
<Directory />
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

RackEnv test
RackBaseURI /rails_app
<Directory /srv/http/rails_app>
    Options -MultiViews
</Directory>
</VirtualHost>

效果很好。唯一的问题是我在模型中使用路由 url 助手,如下所示:

# egg.rb
def to_exhibit
  return {
    :edit_path => Rails.application.routes.url_helpers.edit_egg_path(self)
  }
end

在视图中呈现 URL 时,子 URI 会按照我的预期使用,但是当从模型中访问 URL 帮助程序时,它会被丢弃,并且路径总是相对于根。

来自 egg_controller.rb:

edit_egg_path(1000) --> /rails_app/eggs/1000/edit

来自 some_model.rb:

edit_egg_path(1000) --> /eggs/1000/edit

这应该像我期望的那样工作吗?我根本不介意手动修复它,但我不知道在哪里可以找到 RackBaseURI 的值,所以我可以手动插入它(如果存在)。我不想在某些环境配置中再次手动定义它,因为 Rails 必须已经知道它。

4

0 回答 0