главная -> статьи -> On-line приложения на платформе Ruby on Rails (часть 2)
 
Работа с Ajax

  Платформа содержит развитую поддержку работы с технологией Ajax, обеспечивая доступ к серверу без обновления формы. См. раздел Module ActionView::Helpers::PrototypeHelper в API Ruby on Rails.

  В приложении Библиотека v3.1 до сохранения сведений о пользователе ведется проверка уникальности логина (фрагмент кода контроллера показан в разделе Работа с базами данных, пример 3).

  В общем случае, RoR API для формирования Ajax запроса предлагает метод remote_function

 <%= remote_function(
 :url =>{ :action => : pre_log},
 :complete => "res_log(request.responseText)") %>

где res_log – javascript функция формата, вызываемая по завершению работы action pre_log с параметром request.responseText

  Для формирования запроса с параметрами можно воспользоваться непосредственным обращением к Ajax объекту перед выполнением form.submit(this):

new Ajax.Request('/persons/pre_log?log='+form.user_login.value, {asynchronous:true, evalScripts:true, onComplete:function(request) {res_log(request.responseText)}})

  В контроллере persons определяем action pre_log:

def pre_log
 @user = User.find(:first,   :conditions => [ "id <> ? AND login = ? ",
 session[:my_user].to_i, params[:log]])
	if @user != nil
	  tmp_txt = "1"
	else
tmp_txt = "0" end render_text tmp_txt end

  Функция формы:

function res_log(txt){
	if (txt=="0"){
	  msg.innerHTML = "";
	  form.submit(this);
	}
	  else{
	  msg.innerHTML = "Такой логин уже зарегистрирован в" +
	  системе. Пожалуйста, измените.";
	}
}   

  Таким образом, не отправляя форму на сервер (сохраняем заполненные поля), производим проверку требуемых полей по заданным на сервере условиям. Просто и достаточно эффективно.

далее

   
  © 2008   Сединко А.М.
  © 2004 design by   kir
Hosted by uCoz