мой рельс ApplicationController имеет RoutingError - PullRequest
0 голосов
/ 11 июня 2009

Я никоим образом не разработчик Ruby, но я пишу HAML для Ruby Framework на моем локальном хосте.

Первоначально я поместил файл с именем vidgirlBox2.flv file и вызвал его в HAML, но преобразовал этот файл в swf с именем vidGirl_home.swf.

Этот SWF работал.

Пока я не сделал простое изменение в оригинальном .fla и не переписал vidGirl_home.swf.

Это больше никогда не сработало.

Я попробовал swfObject, ненавязчивый Flash-объект, необходимый минимум для встраивания swf, всего.

Оказывается, я получаю это сообщение в моем терминале при запуске моего локального сервера:

ActionController::RoutingError (No route matches "/Users/daniellevine/Desktop/vidgirlBox2.flv" with {:method=>:get}):


Rendering rescues/layout (not_found)

Как вы можете сказать, он ищет старый файл. Я не называю этот файл ни в одном из моих сообщений. Я не понимаю, как этот flv записал себя в рубин (по крайней мере, так).

Это была моя попытка обходного пути, но, похоже, этот код генерирует ошибку компилятора rails. Это может быть просто ошибка соглашения об именовании. Я где-то пропустил кавычку?

Мой новый код для вставки:

      - if Rails.env.development?
      = javascript_include_tag "swfobject"
      - else
      %script{:src => "http://ajax.googleapis.com/ajax/libs/swfobject/2.1/swfobject.js"}
      - id ||= "flash"
      - filename ||= "/images/vidGirl/vidGirl_home.swf"
      - width ||= 440
      - height ||= 247
      - background ||= "#ffffff"
      - version ||= 9
      - base ||= '{base: "."}'

      %div{ :id => id }
        %strong You need to upgrade your Flash Player

      = javascript_tag "swfobject.embedSWF('/images/vidGirl/vidGirl_home.swf', 'vidGirl_home', '440', '247', '9.0.0', '/javascripts/swfobject/expressInstall.swf', {}, '/public/', {});"

Кто-нибудь знает, что могло случиться? или еще лучше, как это исправить?

Спасибо !!

Ответы [ 3 ]

1 голос
/ 11 июня 2009

Я не очень разбираюсь в Flash, но, похоже, когда вы конвертировали файл в SWF, он в основном включал ваш предыдущий файл vidgirlBox2.flv в качестве ресурса. Я предполагаю, что этот ресурс использовался на вашем рабочем столе, поэтому, когда вы редактировали свой FLA-файл, локальный путь каким-то образом сохранялся в ресурсе. Ошибка, которую вы видите, будет вызвана неправильным путем к ресурсу, который вызывается из самого файла флэш-памяти, а не из-за вызовов, которые вы делаете в разметке haml, что выглядит нормально.

0 голосов
/ 11 июня 2009

В прошлый раз, когда у меня была эта проблема, один флэш-фильм пытался загрузить другой флэш-фильм, но базовый путь был неправильным. Так что austinfromboston может быть прав: преобразовав flv в swf, он встроил ваш .flv в swf.

Как обойти это? Убедитесь, что путь в .swf не является абсолютным. Затем вам нужно установить параметр BASE. Вот пример с swobject и HAML:

- if Rails.env.development?
= javascript_include_tag "swfobject"
- else
%script{:src => "http://ajax.googleapis.com/ajax/libs/swfobject/2.1/swfobject.js"}
- id ||= "flash"
- filename ||= "/swf/flashmovie.swf"
- width ||= 990
- height ||= 500
- background ||= "#ffffff"
- version ||= 9
- base ||= '{base: "."}'

%div{ :id => id }
  %strong You need to upgrade your Flash Player

= javascript_tag "swfobject.embedSWF('#{filename}', '#{id}', '#{width}', '#{height}', '#{version}', '/swf/express_Install.swf', {}, #{base}, {});"

Путь /swf/flashmovie.swf означает, что в общей папке есть папка swf.

0 голосов
/ 11 июня 2009

Похоже, что код встраивания, который вы используете, пытается получить доступ к файлу через локальный путь (то есть путь на вашем компьютере).

Я не уверен, является ли это приложением Rails (или другой платформой Ruby), но вам нужно сделать так, чтобы файл .flv / .swf находился там же, где и другие статические файлы.

Для приложений Rails это должно быть в папке public /. Я использую некоторые приложения Rails + Flash и обычно помещаю файлы в публичный каталог / flash /.

Другой вариант - поместить файл .swf / .flv в учетную запись S3 и получить к нему доступ через прямой URL-адрес S3. Это хорошо для больших видеофайлов, так как экономит трафик.

...