0

現在、ボタンがクリックされたときにパーシャルをロードしようとしています。だから私がやっていることは、リモート=> trueを追加し、次に、これを行う.js.erbファイルに移動するコントローラーアクションにformat.jsを追加することです。

$('#videospan').html('<%= escape_javascript(render :partial => 'newpartial') %>');

現在、videospanにはすでに別のパーシャルがあり、代わりにこのパーシャルを追加しています。これは、html部分に関しては正常に機能します。現在、newpartialにはjavascriptが含まれていますが、残念ながら検出されません。htmlがjavascriptの前にロードされたためですか?HTMLから見えるようにするにはどうすればよいですか?元のhtmlファイルで定義する必要がありますか?

ありがとうございました、


javascriptメソッドの1つ:

function saveAll()
{
     for(key in storedData){
        storedData[key].push.apply(storedData[key],[$('#'+key).position().top,$('#'+key).position().left]);
    }


    $.getJSON('<%= save_answers2_course_lecture_path(@course, @lecture) %>',{"stored":storedData}, function(resp){
        redirect()
    });
}

だから今私はそれをjs.erbにも追加することによってjavascriptを渡そうとしているので、今私はjs.erbにこれを持っています:

$('#videospan').html('<%= escape_javascript(render :partial => 'newpartial') %>');
pop = Popcorn.youtube( "#youtube", lec ,{ width: 400, controls: 0});                           
pop.play();

そこで、#youtube divを含むパーシャルをレンダリングし、その中にポップコーンを使用してビデオを追加します。残念ながら、これらの3行を追加すると、レンダリングも機能しません。


ファイアバグの場合、返された応答を確認すると、次のようになります。

$('#videospan').html(".........");
pop = Popcorn.youtube( "#youtube", http://www.youtube.com/... ,{ width: 400, controls: 0}); 
pop.controls( false );                          
pop.play();

それで、すべてが正しく送信されますが、なぜそれが表示されないのですか?

4

2 に答える 2

1

できるだけ多くのJavascriptをスクリプトファイルに移動することをお勧めします。1つのアプローチは、機能をコードと構成データに分割することです。コードを.jsファイルに入れ、データをDOMまたは変数に入れます。

// Option1 -- Using DOM
// my_function.js
function saveAll() {
  // code code code
  var url = $('#some_dom_element').attr('data-some-attribute-name');

  $.getJSON(url, 'blah blah');
}

# my_template.js.erb
<div id="some_dom_element" data-some-attribute-name="<%= save_answers2_course_lecture_path( @course, @lecture) %>">
</div>

// Option 2 -- Using a variable
// my_function.js
function saveAll() {
  // code code code
  $.getJSON(url, 'blah blah');
}

# my_template.js.erb
var url = '<%= raw(save_answers2_course_lecture_path( @course, @lecture) %>';
于 2012-11-29T18:16:28.023 に答える
1

誰かが誰かの問題に直面した場合に備えて..それは私が持っていたエラーが原因でした。これによると:http://www.alfajango.com/blog/rails-js-erb-remote-response-not-executing/

.js.erbファイルにエラーがあると、コードは無音で失敗します。エラーをチェックするには、firebugからの応答をコピーし、コマンドラインに投稿して実行します。

于 2012-11-29T22:54:13.113 に答える