2012-05-09 2 views
0

나는 이것에 관해서 무의미하고 완전히 붙어 있습니다. railscast 103에 이어 레일을 사용하여 발표 시스템을 구현하려고합니다. 3.2.3Railcasts 103 - 프로토 타입에서 Jquery 로의 변환, 필요한 도움

이 튜토리얼에서는 프로토 타입을 사용하고 jquery로 변환하는 방법을 모릅니다.

%h3{:id => "alert", :class=>'alert-danger fade in', :style=>"padding: 10px;"} 
    - unless current_announcements.empty? 
    #announcement 
     - for announcement in current_announcements 
     %ul{:class=>'unstyled'} 
      %li 
      = h announcement.message 
      = link_to "Hide this message", :url => "/javascripts/hide_announcement.js"#, :remote => true 

또한 현재 시간으로 announcement_hide_time을 설정하는 동안보기를 제거하도록되어 숨기기 버튼을 클릭 : 내 application.html.haml에서

나는이 있습니다. 내 경로에

class JavascriptsController < ApplicationController 

    respond_to :js 

    attr_accessible :announcement_hide_time 

    def hide_announcement 
    session[:announcement_hide_time] = Time.now 
    end 
end 

그리고이 : 내 자바 스크립트 컨트롤러이이

match ":controller/:action.:format" 

문제는 이제 railscast, 그것은 내가 hide_announcement.js.rjs

을에 다음이 필요 말한다이다
page[:announcement].hide 

내가 함께 hide_announcement.js.erb 교체했습니다 어느 :

$("#announcement").hide() 

하지만 링크를 클릭하면 콘솔에 오류가 표시되지 않고 메시지가 제거되지 않습니다.

답변

1

레일 스 캐스트를 에뮬레이션하지 말 것을 권합니다. 2008 년 이후로 상황이 많이 바뀌 었습니다. 클라이언트에서 실행하기 위해 서버에 Javascript를 작성하는 것은 어렵습니다. 전체 JavascriptsController 아이디어 나에게 cringeworthy 느낀다.

대신 "알림 숨기기"링크를 사용하면 클라이언트 측에서 AJAX 요청을 트리거하여 알림 표시 중지를 알리고 success 유형 응답을 기다리고 메시지 자체를 제거 할 수 있습니다.

나는이 기본 버전을 보여주는 fiddle을 만들었습니다. AJAX 요청에 대한 서버 응답을 가짜로 처리하지만 모든 응용 프로그램은 HTTP 성공 코드를 반환해야합니다.

응용 프로그램이 간단하면 충분하지만 결국에는 이러한 jQuery 이벤트가 제어 불능 상태가되며 backbone.js와 같은 클라이언트 측 프레임 워크가 필요할 수 있습니다.

+0

너무 많은 tidier :) 끝 부분에서 약간의 변환으로 제대로 작동하지만 사용했음을 알았습니다. 건배, 매우 도움이됩니다. 에스 – simonmorley

관련 문제