【问题标题】:RoR link_to and assets pathsRoR link_to 和资产路径
【发布时间】:2012-04-13 21:19:50
【问题描述】:

我有一个通过 HeliconZoo 模块在 IIS 7.5 上运行的 RoR (1.9.3 - 3.2) 应用程序。 它位于像http://server/application/这样的子目录中

现在,如果我将 link_to 与 之类的直接位置一起使用,它会链接回 http://server/users 而不是 http://server/application/users(同时链接到控制器操作可以正常工作)。

此外(这是更大的问题)应用程序正在将所有资产预编译到 server/application/public/assets 中,但在渲染时正在 server/public/assets 中搜索它们。 如果我设置 config.assets.prefix 资产也会被渲染到不同的位置(“/application/...”作为每次添加),这会导致不断的不同步并且永远不会加载资产。 我可以通过将 config.assets.prefix 更改为“/application/public/assets”进行预编译并在之后将其更改回默认值来解决此问题,但这很烦人。

是否有某种配置告诉渲染器在直接链接和资产上添加前缀(“/application”)?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 iis-7 iis-7.5 helicontech


    【解决方案1】:

    我从未使用 IIS 或 HeliconZoo 进行 Rails 部署,所以这可能行不通,但无论如何我都会尽力回答,因为在我看来,您真正想要做的是让 Rails了解您将其部署到子文件夹,这并不太难。只需将 routes.rb 中的所有内容封装在一个范围内,如下所示:

    scope "/context_root" do
       resources :controller
       resources :another_controller
       match 'welcome/', :to => "welcome#index"
       root :to => "welcome#index"
    end
    

    我直接从here复制了这个答案,这可能会为您提供更多有用的信息。

    【讨论】:

    • 执行此操作时,资产正在正确加载,但 rails 预计应用程序的其余部分位于 /server/application/application 显然什么都没有,所以我每次都会收到 404 错误。
    【解决方案2】:

    请尝试打开 IIS 管理器,导航到“应用程序”文件夹,打开上下文菜单并选择“转换为应用程序”。通常不需要专门修改 Ruby 代码。

    【讨论】:

    • 不起作用。我已经尝试了 IIS 上的几乎所有设置,但似乎没有任何效果。控制器操作与“application/”前缀链接,所以我猜 IIS 假定应用程序位于根目录中,这就是为什么直接链接总是进入网页的根目录而不是应用程序的原因。不明白为什么...
    猜你喜欢
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    相关资源
    最近更新 更多