Jamie Orchard-Hays
2006-Nov-04 02:30 UTC
[Rails] headers[''Content-Type''] & link_to_remote on Rails Edge
I''m on rails edge and am calling an after filter on my actions. Works
except for my ajax calls via link_to_remote. When I inspect headers,
I see the ''Content-Type'' is key for an object rather than a
string.
Shouldn''t it be a string? Anyone know if this is a bug or if
I''m
dealing with this incorrectly.
Thanks,
Jamie
The code:
after_filter :set_charset
def set_charset
logger.debug("!!!!---- headers: #{headers.inspect}")
unless headers[''Content-Type''] =~ /charset/i
headers[''Content-Type''] ||= "text/html"
headers[''Content-Type''] += '';
charset=utf-8''
end
headers[''Pragma''] = ''no-cache''
headers[''Cache-Control''] = ''no-cache, no-store,
must-revalidate''
end
from the logger:
!!!!---- headers: {"Status"=>"200 OK",
"cookie"=>[],
"Content-Type"=>#<Mime::Type:0x1316954
@synonyms=["application/javascript",
"application/x-javascript"],
@symbol=:js, @string="text/javascript">,
"Cache-Control"=>"no-cache"}
Part of the stack trace:
NoMethodError (undefined method `+'' for #<Mime::Type:0x1316954>):
/app/controllers/application.rb:87:in `set_charset''
.//vendor/rails/actionpack/lib/action_controller/filters.rb:
471:in `call''
.//vendor/rails/actionpack/lib/action_controller/filters.rb:
465:in `call''
.//vendor/rails/actionpack/lib/action_controller/filters.rb:
633:in `call_filter''
.//vendor/rails/actionpack/lib/action_controller/filters.rb:
615:in `perform_action_without_benchmark''
.//vendor/rails/actionpack/lib/action_controller/benchmarking.rb:
66:in `perform_action_without_rescue''
