Повторное обновление страницы div в Rails из контроллера - PullRequest
0 голосов
/ 17 января 2011

У меня есть приложение на Rails 3, которое выполняет длинную задачу по созданию нескольких запросов к базе данных для поиска документов.Я хочу показать пользователю ход выполнения множества запросов.Я создал функцию jquery, которая использует jquery.ui.progressbar.Я хочу динамически обновлять индикатор выполнения, поскольку контроллер поиска документов просматривает поисковые фразы.Мне нужно знать, как динамически вызывать JavaScript, чтобы обновить div прогрессбара в представлении документа.Пожалуйста, дайте мне знать, как вызвать javascript с контроллера rails.

Ответы [ 2 ]

2 голосов
/ 17 января 2011

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

Edit:

примеры того, как вы можете обновить свою страницу в ответ на опрос ajax

#some_controller.rb

def check_download_progress
  #some_method
end

# javascript erb file. views/some_controller/check_download_progress.js.erb
# You can mix js and ruby and send it as a response to an ajax call; examples:

#check_download_progress.js.erb 

<%- if @some_value.present? -%>
  $('#progress_bar').addClass('<%= @some_value -%>');
<%- end -%>

#or simply call a function

my_remote_function(<%= @some_value -%>);
0 голосов
/ 18 января 2011

В вашем действии на Rails вы можете использовать RJS:

# Your AJAX action in controller.
def update_progress_bar
  render :update do |page|
    page.call 'java_script_method_name', 'param1', 'param2', etc.
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...