본문 바로가기

삽질

JQuery를 이용한 Rails RJS

Rails RJS에서 기존의 Prototype과 Scriptaculous를 사용하던 것을 jQuery와 jQuery-ui로 대채할 수 있도록 하는 것이 jRails 입니다.

현재 jRails의 버전은 0.4 이며 jQuery 1.2.6과 jQuery-ui 1.5버전이 포함되어 있습니다.

jRails 를 설치 합니다. ( http://ennerchi.com/projects/jrails ) ruby script/plugin install http://ennerchi.googlecode.com/svn/trunk/plugins/jrails 컨트롤러에 javascript를 받을 수 있도록 response_to에 js를 추가 합니다.
respond_to do | format |   format.html { redirect_to :action => "index" }   format.js end
jRails Javascript를 불러오도록 뷰에 추가합니다.
<%= javascript_include_tag :defaults %>
이제 Action이름.js.erb 파일을 생성하고 폼 처리후에 실행할 자바스크립트를 작성합니다.
$("#comments").append("<%= escape_javascript( render(:partial => "comment",  :locals => { :comment => @comment})) %>;");
뷰에서 form_for 대신에 remote_form_for 를 사용합니다.
<% remote_form_for :comment, :id => "comment_form", :html => { :id => "comment_form" }, :url => { :action => "create" } do | f | %>;
폼 태그에 다음과 같은 jQuery를 사용한 javascript 코드가 삽입됩니다.
onsubmit="$.ajax({data:$.param($(this).serializeArray()) + '&authenticity_token='+ encodeURIComponent('a8067d5dbc597158d932610793a977f2637abdf0'), dataType:'script',type:'post', url: '/comments/create'}); return false;"
jRails를 처음 받으면 JQuery버전이 1.2.6 이지만 최신버전인 1.3.2로 jQuery.js 를 변경하더라도 문제가 발생하지 않았습니다. 구글링을 하다보니 jQuery-ui 1.6에서는 오류가 발생한다고 하니 참고하시기 바랍니다.