Проблема решена:
в service.ts должно быть
const headers = new HttpHeaders (). Append ( ' Content-Disposition ', 'multipart / form-data');
blockquote>вместо
const headers = new HttpHeaders (). append (' Content-Type ', 'multipart / form-data');
blockquote>Также в контроллере .net , добавляя или удаляя [ 110] [FromForm (Name = "file")] в качестве префикса параметра не меняет поведение. Он прекрасно работает с ним или без него. Как указал Хьюго в комментариях, это соглашение основано, если имя параметра совпадает с именем в данных формы.
Хорошо, мне удалось разобраться в этой проблеме:
нет никакого способа не сделать это в направляющих по умолчанию (по крайней мере, еще). Вместо того, чтобы использовать пространства имен и значения по умолчанию, я должен был установить фильтр маршрутизации Sven Fuchs .
, Как только плагин установлен, я добавил следующий файл к своему каталогу lib:
require 'routing_filter/base'
module RoutingFilter
class Locale < Base
# remove the locale from the beginning of the path, pass the path
# to the given block and set it to the resulting params hash
def around_recognize(path, env, &block)
locale = nil
path.sub! %r(^/([a-zA-Z]{2})(?=/|$)) do locale = $1; '' end
returning yield do |params|
params[:locale] = locale || 'en'
end
end
def around_generate(*args, &block)
locale = args.extract_options!.delete(:locale) || 'en'
returning yield do |result|
if locale != 'en'
result.sub!(%r(^(http.?://[^/]*)?(.*))){ "#{$1}/#{locale}#{$2}" }
end
end
end
end
end
я добавил эту строку к routes.rb:
map.filter 'locale'
Это в основном заполняет прежде и после рычага, сгенерированного плагином, который обертывает маршрутизацию направляющих.
, Когда URL распознан, и прежде чем направляющие добираются, чтобы сделать что-либо с ним, around_recognize метод называют. Это извлечет двухбуквенный код, представляющий локаль, и передаст ее через в параметрических усилителях, принимая значение по умолчанию к 'en', если никакая локаль не будет определена.
Аналогично, когда URL будет сгенерирован, параметр локали будет продвинут в URL на левой стороне.
Это дает мне следующие URL и отображения:
/ => :locale => 'en'
/en => :locale => 'en'
/fr => :locale => 'fr'
Все существующие помощники URL работают как прежде с единственной разницей, являющейся, что, если локаль не определяется, это сохраняется:
home_path => /
home_path(:locale => 'en') => /
home_path(:locale => 'fr') => /fr
Можно определить значения по умолчанию в маршруте с помощью :defaults
ключ. Попробуйте это:
map.connect ':lang/posts/:id', :controller => 'posts', :action => 'show',
:defaults => { :lang => 'en' }
Я предполагаю (сейчас нет времени на тестирование), что это может сработать:
map.connect ':language/posts/:id', :controller => 'posts', :action => 'show'
map.connect 'posts/:id', :controller => 'posts', :action => 'show'
Хорошо, попробовал - работает, по крайней мере на Rails 2.1.1. Так что это хорошо. Однако идея «по умолчанию» не работает, и это позор, потому что это СУХОЙ.
Мысль Вы могли когда-то использовать [ключ] => ноль для определения дополнительного параметра. Что-то как:
map.connect ':lang/posts/:id', :controller => 'posts', :action => 'show', :lang => nil
Я понимаю, что этот старый вопрос, но он может быть полезен.
map.with_options(:path_prefix => ":locale") do |m|
m.resources :posts
m.resources :stories
end
И для определения локали нужно добавить перед фильтром в контроллер приложения, например,
before_filter :define_locale
def define_locale
if params[:locale] == nil
I18n.locale = 'en'
else
I18n.locale = params[:locale]
end
end