2010-10-20 1 views
0

В моем контроллере я пытаюсь выполнить ванильный JavaScript, но получаю неожиданный результат. Это кодПроблема рендеринга ванильного JavaScript в Ruby

class UploadController < ApplicationController 

    def index 

     render :file => 'app\views\upload\uploadfile.rhtml' 

    end 

    def uploadFile 

     render :js => "alert('Hello Rails');" 

     post = DataFile.save(params[:upload]) 

    end 

end 

Am ожидает перед выполнением пост = DataFile.save (PARAMS [: загрузить]) я должен увидеть alertbox, но я вижу в окно загрузки. В чем может быть проблема?

+0

Вы уверены, что достигли нужного вам маршрута? и какую ошибку вы получаете? –

+0

Я не получаю никакой ошибки, но когда я пытаюсь сделать рендер: js => «alert (« Hello Rails »); я получаю окно загрузки из моего проводника –

ответ

1

render :js будет передавать данные с типом MIME text/javascript Браузеры будут видеть это и попытка загрузить или отобразить его (мой браузер Chromium, отображает .js файлы в качестве открытого текста.)

render :js действительно означает вернуть часть JavaScript, который будет обработан кодом уже на этой странице.

В сущности, вы можете иметь вызов AJAX с JQuery:

$.ajax({ 
    type: "POST", 
    url: "tokens/1/destroy.js", 
    data: { _method: 'DELETE', cell: dsrc.id } 
}); 

Это код взят из проекта шахты. Здесь не определен dataType, поэтому jQuery разумно «догадывается», какой тип данных возвращается. Он видит, что это MIME-Type: text/javascript и выполняет его. Что, если мы будем использовать ваш код, приведет к отображению диалогового окна предупреждения.

По сути, вам нужно, чтобы страница уже загружалась, и страница должна ждать возврата «ванильного JavaScript».

Если вы просто хотите выполнить какой-либо код для этого конкретного действия, вам просто нужно его обернуть, используя javascript_tag в вашем шаблоне/представлении или включите внешний .js-файл.

+0

Робби спасибо, но не могли бы вы помочь мне по поводу этого кода (который прислал мне) это мой viwe для этого контроллера –

+0

File Upload

<% = form_tag ({: действие => «uploadFile '} ,: multipart => true)%>

: <% = file_field' upload ',' datafile '%>

<% = submit_tag "Загрузить"%> –

+0

AMIT, Я бы рекомендовал просмотреть некоторые из railscast для работы с javascript: http://railscasts.com/episodes?search=RJS – Robbie

 Смежные вопросы

  • Нет связанных вопросов^_^