【问题标题】:refinerycms undefined method `escape_path' for Rack::Utils:ModuleRack::Utils:Module 的refinerycms 未定义方法“escape_path”
【发布时间】:2015-07-30 03:51:02
【问题描述】:

我正在将 heroku cedar-10 上的一个旧项目升级到 cedar-14,为了让它工作,我不得不升级一些东西。

将炼油厂cms 从 1.0.8 升级到 1.0.11 时,我在进入炼油厂/图像区域时收到此错误;

undefined method `escape_path' for Rack::Utils:Module

Extracted source (around line #4): 

Rendered /usr/local/rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/refinerycms-images-1.0.11/app/views/admin/images/index.html.erb within layouts/admin (360.1ms)
Completed 500 Internal Server Error in 454ms

ActionView::Template::Error (undefined method `escape_path' for Rack::Utils:Module):
    1: <ul id="image_grid" class="<%= ['clearfix', 'pagination_frame', pagination_css_class].compact.join(' ') %>">
    2:   <% @images.each_with_index do |image, index| -%>
    3:     <li id="image_<%= image.id %>" class='image_<%= index % 5 %>'>
    4:       <%= image_fu image, '135x135#c', :title => image.title %>
    5:       <span class='actions'>
    6:         <%= link_to refinery_icon_tag('eye.png'), image.url,
    7:                     :target => "_blank",


Rendered /usr/local/rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/actionpack-3.0.20/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.7ms)
Rendered /usr/local/rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/actionpack-3.0.20/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (6.2ms)
Rendered /usr/local/rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/actionpack-3.0.20/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (11.6ms)

更新

我尝试更新 rack 但 rails 3.0.20 依赖于 rack 1.2.5, rack 1.2.5 不包含 escape_path 方法!

现在我想知道猴子补丁机架或升级到 rails 3.1 是否容易 不过,更新到 rails 3.1 似乎需要更新 refinerycms 和它的所有朋友。不像听起来那么有趣。

【问题讨论】:

    标签: ruby-on-rails refinerycms


    【解决方案1】:

    您可以使用缺少的方法扩展旧的Rack::Utils 模块。

    require 'rack/utils'
    
    module Rack
      module Utils
        def escape_path(s)
          escape(s).gsub('+', '%20')
        end
        module_function :escape_path
      end
    end
    

    例如将其添加到config/initializers 到名为expand_rack.rb 的文件中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多