gpt4 book ai didi

ruby-on-rails - Post/Put 请求的路由错误(Passenger Headers)

转载 作者:行者123 更新时间:2023-12-04 05:44:39 24 4
gpt4 key购买 nike

我遇到了一个奇怪的问题,经过大量研究后无法解决。我有几种通过 Carrierwave 上传文件的表格。当我上传信息时,部分路线被切断(我认为)。

例如,我有一个多部分表单提交给:

https:/domain/programs/223/add_file as POST



但在提交时我收到错误

No route matches [POST] "/223/add_file"



即使我的地址栏中的内容是完整的路线。如果将完整的路由作为 GET 请求提交,它就可以正常工作。当我运行 rake 路线时,路线显示得很好。

这是我的路线的一个子集:
resources :programs do
match "add_file" => "programs#add_file"

如果重要的话,我正在 Apache 上使用 Passenger 运行 Rails 3.2.2。问题仅发生在此生产服务器上,从未发生在开发中。

有任何想法吗?我一直坚持这个,因为它会影响多条路线,我已经尝试为该表单定义一个自定义路线,但没有运气。

更新:
当我从表单中删除 multi-part => true 或 file_field_tag 时,它解决了问题。这仍然是一个问题,但似乎与路由有关,而不是关于带有文件上传的表单。

最佳答案

创建 passenger_extension.rblib带有此代码的文件夹:

乘客 3

module PhusionPassenger
module Utils

protected

NULL = "\0".freeze

def split_by_null_into_hash(data)
args = data.split(NULL, -1)
args.pop
headers_hash = Hash.new
args.each_slice(2).to_a.each do |pair|
headers_hash[pair.first] = pair.last unless headers_hash.keys.include? pair.first
end
return headers_hash
end

end
end

乘客 5
module PhusionPassenger
module Utils

# Utility functions that can potentially be accelerated by native_support functions.
module NativeSupportUtils
extend self

NULL = "\0".freeze

class ProcessTimes < Struct.new(:utime, :stime)
end

def split_by_null_into_hash(data)
args = data.split(NULL, -1)
args.pop
headers_hash = Hash.new
args.each_slice(2).to_a.each do |pair|
headers_hash[pair.first] = pair.last unless headers_hash.keys.include? pair.first
end
return headers_hash
end

def process_times
times = Process.times
return ProcessTimes.new((times.utime * 1_000_000).to_i,
(times.stime * 1_000_000).to_i)
end
end

end # module Utils
end # module PhusionPassenger

然后在“config/application.rb”中做:
class Application < Rails::Application
...
config.autoload_paths += %W(#{config.root}/lib)
require 'passenger_extension'
end

然后重新启动网络服务器。

注意:我不确定这不会破坏任何其他功能,因此请自担风险使用它,如果您发现这种方法有任何危害,请告诉我。

关于ruby-on-rails - Post/Put 请求的路由错误(Passenger Headers),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14116180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com