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 ヘルパーにアクセスする場合は破棄され、パスは常にルートからの相対パスになります。

Eggs_controller.rb から:

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

some_model.rb から:

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

これは期待どおりに機能するはずですか?これを手動で修正することはまったく気にしませんが、RackBaseURI の値が存在する場合は手動で挿入できるように、その値をどこで見つけるかについて困惑しています。Railsはすでにそれを認識している必要があるため、一部の環境confで手動で再度定義することは避けたいと思います。

4

0 に答える 0