2009-05-12 4 views
0

私は、一連の選択ボックスから要素を動的に追加するページがあります。私はこれを行うためにRJSを使用しており、それは素晴らしい仕事です。さて、divのこれらの要素は、ユーザーがテキストエリアを削除したい場合に備えて、Deleteボタンが付いた一連の要素です。ここに私が壁に当っている場所があります。RJSメソッドから生のJavaScriptを出力する

ここに、[削除]ボタンを実行するコードがあります。これは私の知る限りではうまく機能している:私のレポートコントローラで

<%= link_to image_tag("/images/button_delete.gif", :alt=>"Delete"), :controller=>"report", :action=>"remove", :id=>@sentence.id %> 

が、私は上記のコードで呼ばれているこの非常に簡単な方法を持っている:

DEF @sentence_idを削除= paramsは[:ID] end

もう一度やっていると思います。私はボタンを押すことで、このアクションを有効にすると今、オフ我々は、RJSファイルにremove.rjsを行く:

page.remove 'sentence_'[email protected]_id 

そして、ここでは、私が代わりに喜ん削除要素の、私のブラウザで何を得るのです!

try 
{ 
    Element.remove("sentence_63"); 
} 
catch (e) 
{ 
    alert('RJS error:\n\n' + e.toString()); 
    alert('Element.remove(\"sentence_63\");'); 
    throw e; 
} 

これは、現在のコンテキストにページが存在しない場合に発生します。これに関するオンライン文書は一種のものです。

乾杯、 アーロン。

答えて

0

remove関数はレコードを実際に削除していないようですので、ページからHTML要素を削除したい場合は、次のようにしてください。要素のプロトタイプremove() methodを使用してlink_to_functionを使用してください。また、あなたが(たとえば、2.3.2用)のRailsの最新バージョンを持っているならば、あなたはautoにdom_id helperを利用することができsentance_id ID属性を生成

<%= link_to_function(image_tag("button_delete.gif", :alt=>"Delete"), "$('#{dom_id(@sentence}').remove();" %>

このようなアプローチは助けることができますあなたのコントローラにメソッドの数を減らしてください(コントローラで何か他の操作をしない限り)

1

リモートへのリンクを試してください。それはあなたのためのajax呼び出しを構築し、ページから要素を削除する必要があります。

次に、link_to_remote構文はlink_to構文とは少し異なります。したがって、あなたもそのリンクをあなたに任せないでください。

0

あなたの削除]リンクは、通常のリンクとして設定され、すなわち、通常のHTTPリクエストをトリガー

<a href="/report/remove" id="sentence_63"> 
    <img src="/images/button_delete.gif" alt="Delete" /> 
</a> 

link_to_remote

関連する問題