2010-07-13 1 views
0

레일 사이트 인 my site에 대한 사이트 배지 또는 위젯을 만드는 데 최선을 다하고 있습니다.레일에 사이트 배지 또는 위젯 만들기 : 두 번째 스크립트 호출시 문제가 발생했습니다.

기본적으로 사용자가 만든 콘텐츠를 게시하고 해당 콘텐츠를 좋아하는 사용자는 기부금을내어 감사의 마음을 표현할 수있는 사이트입니다.

나는 위젯을 만드는 방법에 대해 잠시 동안 similar question을 물었습니다. 그러나 그 전에는 자바에 대한 실제 연구를하기 전에있었습니다. (로컬 호스트에서 : 3000/자바 스크립트/widget.js)

첫 번째 스크립트는 내가 생각 괜찮 았는데 :

var Widget = 
{ 
    init:function() 
    { 
     var loc = window.location; 
     var title = document.title; 
     var href = 'http://localhost:3000/donations/new.js?url=' + encodeURIComponent(loc); 

     href = href + '&title=' + encodeURIComponent(title); 

     var script = document.createElement('script'); 
     script.src = href; 
     script.type = "text/javascript"; 

     document.documentElement.firstChild.appendChild(script); 

    } 
}; 
Widget.init(); 

(내가 그것을받을 new.js 그 때문이었다 이유는 어디에 대한 모든 통계

: 위의 스크립트는 내가 두 번째 스크립트를 호출 불을 지르고 충분히 있는지를 확인 실행

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title>Test Widget</title> 
     <script src="http://localhost:3000/javascripts/widget.js" type="text/javascript"></script> 
    </head> 
    <body> 
     <h1>Test Widget</h1> 
    </body> 
</html> 

: 링크는 내가 그것을 호출하는 간단한 HTML 파일을 만든 스크립트를 테스트하려면 ) 주요 사이트에 표시

<script src="http://localhost:3000/donations/new.js?url=file%3A%2F%2F%2FC%3A%2Fgoldhat_production%2Ftest_widget.html&amp;title=Test%20Widget" type="text/javascript"></script> 

0 마지막으로 난 그냥이 호출되는 것을 확인하기 위해 다음 스크립트와 new.js.erb 파일을 만든 :

var Stats = 
{ 
    init: function() 
    { 
     alert("Hello World!"); 
    } 
}; 
Stats.init(); 

그리고 기부 컨트롤러에서

내가 다음 코드를 추가 " 새로운 "액션 :
respond_to do |format| 
    format.js 
    format.html 
end 

그래서 나는 그것을 소용돌이주고 내가 페이지를 새로 고칠 때 내가 안녕하세요 경고를하지 않지만 실제로 호출되는 것을 얻을 때 나는 (절단)이 오류를 얻을 :

26<h1> 
27 ActionController::MethodNotAllowed 
28 
29</h1> 
30<pre>Only put requests are allowed.</pre> 
31 
32 
33 
34<p><code>RAILS_ROOT: c:/goldhat_production</code></p> 
35 
36<div id="traces"> 

나는 이것으로 잘못 될 수있는 곳이 많은 것처럼 보이지만, 나는 어디 있는지 모르겠다.

답변

2

routes.rb 파일은 new 작업에만 put 요청을 허용합니다. map.resources을 사용하는 경우 새로 만들기를 허용해야하지만 해당 기능을 사용하지 않는 것으로 보입니다. 당신은 RJS를 사용하려는 경우

1), 다음 이미 사용되지 않는 다른 방법으로 자바 스크립트 호출을 이동하고 해당 작업에 경로를 설정 :

난 당신이 세 가지 옵션이 있습니다 참조 필요하다면.

2) rjs를 사용하지 않으려면 정적 리소스로 이동하십시오. 파일을 /public/javascripts 디렉토리로 이동하고 거기에서 링크하십시오.

3) new 방법에 대한 get 요청을 routes.rb에 추가하여 허용하십시오. 이것은 이미있는 경로에 따라 기존 경로 명령문에서 작업을 허용하는 것일 수 있습니다.

map.connect '/donations/new', :controller => :donations, :action => :new, :conditions => { :method => :get } 

나는 개인적으로 관계를 "새"를 참조하지 않는다해서, 옵션 1 또는 2로 갈 것입니다,하지만 난 아마 전체 그림을 볼 수 없습니다.

+0

나는 내 길과 관련이 있다고 생각했습니다. 이걸 시험해보고 알려줘. –

+0

안녕 Geoff, 당신의 해결책은 작동했다. 나는 길을 뒤적 거리며 다른 기능을 방해하지 않도록 내 자신의 위젯 컨트롤러를 가지고 있다고 생각했다. 결국 내 경로에는 "map.resources : widget"행이 있고 hello world 코드가 포함 된 index.js.erb 파일이 있습니다. 내 다른 사이트 중 하나에서 알림 팝업을 보는 것이 얼마나 안심 이었습니까! 감사합니다. –

관련 문제