Вызвать функцию JavaScript, когда данные готовы (в представлении ERB) - PullRequest
0 голосов
/ 01 марта 2011

У меня есть представление rails, foo.html.erb

<% content_for :head do %>
  <script type="text/javascript">
     function showData(data) {
          // ..do stuff here
     }
  </script>
<% end %

<% if !@data.nil? %%>
  <div id="where_data_will_go"></div>
<% end %

"@data" - это JSON с сервера (то есть сервер делает, рендер: json @data).

Как я могу вызвать "showData", когда @data не нуль (то есть у меня есть некоторые данные)?

Ответы [ 2 ]

0 голосов
/ 01 марта 2011

Поскольку Firefox 3 не может обрабатывать контент-приложение / json (то есть он хочет загрузить его как файл, он не будет открывать его изначально), я должен был сделать что-то еще.

Мой контроллер имеет два метода:

def foo
end

def foo_json
 # get data and render json
 render :json => @data
end

В моем представлении теперь есть пустое место, в котором будет храниться JSON, как только я что-то с ним сделаю. Я использовал:

$(document).ready(function() {
    $.getJSON(....)
});

, чтобы заполнить мой div, когда страница загружается, что прекрасно работает. Спасибо Радеку за ваше предложение.

0 голосов
/ 01 марта 2011
<% unless @data.nil? %>
  <script>showData('<%= escape_javascript(@data) %>');</script>
<% end %>

Обратите внимание, что функция в голове также должна быть внутри <script> -tags.

...