2011-09-19 1 views
5

좋아, 꽤 오래 내 레일 앱에서 아약스를 사용 해왔다. 내가 말할 수있는,이 양식을 제출하면 경고 상자를 트리거한다에서 어떻게 든, 내 첫 번째 레일 3.1 응용 프로그램은 내가 지금 .. 기초가 작동레일즈 3.1에서 UJS를 사용할 수 없습니다.

# application.js 
//= require jquery 
//= require jquery_ujs 

# the form 
= form_for @signup, :url => '/signup', :remote => true do |f| 
    = f.text_field :email, :class => 'email', :size => 26 
    = f.submit 'Notify me' 

# the controller 
def signup  # route.rb has 'match '/signup' => 'controller#signup' 
    respond_to do |format| 
    format.js 
    end 
end 

# view: signup.js.erb 
alert('wtf?'); 

을 얻을 수 없습니다. 그렇지 않습니다. 양식 제출은 템플릿을 렌더링하는 컨트롤러 작업으로 이동합니다.

Rendered teaser_pages/signup.js.erb (0.1ms) 
Completed 200 OK in 8ms (Views: 7.2ms | ActiveRecord: 0.0ms) 

j가 트리거되지 않습니다.

UJS 도우미는로드 (내 생각)하지만 내가 할 경우 예상대로 ..

link_to 'click me', '#', :confirm => 'confirmation box!' 

이 가깝지만이 확인 상자를 트리거하기 때문에 작동한다.

무엇이 누락 될 수 있습니까? 어떤 방향으로 봐도 감사하겠습니다.

는 어윈 감사

UPDATE :

은 그래서 레일 대신 text/javascripttext/html을 제공, 헤더에 잘못된 내용 유형을 증명하는 것 같다. 심지어 일부 테스트 후 : 나는 그것을 작동 jquery-rails의 같은 버전으로 새로운 응용 프로그램을 실행할 때

render :js => "alert('AHAHAHAHA');", :content_type => 'text/javascript' 

는 여전히 콘텐츠 형식 text/html

와 헤더를 렌더링합니다. 이 응용 프로그램에서는 그렇지 않습니다.

어디를 봐야합니까?

답변

1

같은 문제가 있습니다. 동일한 gemfile을 가진 테스트 앱을 설정하고 설명했던 것과 같은 결과를 얻었습니다. 새로 생성 된 앱에서는 작동하지만 이전 애플리케이션에서는 작동하지 않습니다. 당분간 실제 렌더링 호출 전에 손으로 콘텐츠 유형 헤더를 설정합니다. 반면에

respond_to do |format| 
    headers["Content-type"] = 'text/javascript' 
    format.js { render "the_template" } 
end 

은 콘텐츠 _가 제대로 전달 변경하지 않은 :이 순간을 위해 도움이

respond_to do |format| 
    format.js { render "the_template", :content_type => 'text/javascript' } 
end 

희망을.

그동안 실제 해결책을 얻었습니까?

업데이트 :

적어도 내 진짜 문제를 발견했습니다. before_filter를 사용하여 content_type을 text/html로 강제 이전에 테스트 해 보았습니다.