2009-06-10 3 views
0

Я ни в коем случае не разработчик Ruby, но я кодирую HAML для рамки ruby ​​на моем локальном хосте.my rails ApplicationController имеет RoutingError

Я изначально поставил файл с именем vidgirlBox2.flv и вызвал его в 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) 

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

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

My New Код для вставки:

 - 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/', {});" 

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

спасибо !!

ответ

0

В прошлый раз, когда у меня была эта проблема, один флеш-фильм пытался загрузить еще одно флеш-ролик, но базовый путь был неправильным. Таким образом, 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

Ваш код создает ошибку компилятора. Я опубликовал то, что я написал в моем первоначальном вопросе выше. – Trip

+0

Я думаю, вы имеете в виду ошибку компиляции haml, не так ли? Какая ошибка? – Kafka

0

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

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

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

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

+0

У меня есть набор, который я пытаюсь сделать из публики, но не повезло. Я предполагаю, что здесь есть несколько вопросов. – Trip

+0

Можете ли вы вставить код для вставки/swfobject здесь? – Callmeed

+0

% объект {: width => "550",: height => "400"} % param {: name => "movie",: value => "/ images/vidGirl_home.swf"} % embed {: src => "/ images/vidGirl_home.swf",: width => "550" height = "400"} – Trip

1

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

+0

Вау, это интересно. Вы правы, .flv был на моем рабочем столе. Тем не менее, swf-файл - это просто фильм, и единственный actioncript - это прослушиватель событий для завершения фильма, чтобы он был запущен. Но от того, что я догадываюсь, это то, что он мог бы сэкономить его на что-то более глубокое. Я предполагаю, что работа вокруг - воссоздать ресурс с нуля. Но когда я создал еще один swf шара, движущегося влево и вправо, это тоже не сработало. – Trip