0

一連の選択ボックスから要素を動的に追加するページがあります。私はこれを行うためにRJSを使用していますが、うまく機能しています。現在、div 内のこれらの要素は、ユーザーがテキストエリアを削除したい場合に備えて、削除ボタンを伴う一連の要素です。ここで壁にぶち当たります。

[削除] ボタンを実行するコードは次のとおりです。これは私の知る限りうまく機能しています:

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

私のレポート コントローラーでは、上記のコードによって呼び出されるこの非常に単純なメソッドがあります。

def remove @sentence_id = params[:id] end

繰り返しますが、それは機能していると思います。ここで、ボタンを押してこのアクションをアクティブにすると、RJS ファイル remove.rjs に移動します。

page.remove 'sentence_'+@sentence_id

そして、喜んで削除された要素の代わりに、ブラウザに表示されるのは次のとおりです。

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

私の理解では、これは現在のコンテキストにページがない場合に発生します。これに関するオンラインドキュメントは、ちょっと薄いです。

どんな助けでも大歓迎です!乾杯、アーロン。

4

3 に答える 3

1

リモートにリンクしてみてください。これにより、ajax 呼び出しが作成され、ページから要素が削除されます。

次に、link_to_remote 構文は link_to 構文とは少し異なるため、つまずかないようにしてください。

于 2009-05-12T21:46:08.383 に答える
0

削除リンクは通常のリンクとして設定されています。

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

通常の HTTP リクエストをトリガーします。あなたの意図はAJAXリクエストをトリガーすることなので、PJ Davisの推奨事項を試して使用してくださいlink_to_remote

于 2009-05-12T22:04:43.440 に答える
0

remove関数は実際にはレコードを削除していないように見えるため、ページから HTML 要素を削除するだけの場合は、Elementslink_to_functionの Prototyperemove()メソッドを使用できます。さらに、Rails の最新バージョン (2.3.2 など) を使用している場合は、dom_idヘルパーsentance_idを利用してID 属性を自動生成できます。

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

このようなアプローチは、コントローラーのメソッドの数を抑えるのに役立ちます (コントローラーで何か他のことをするつもりがない限り)。

于 2009-05-12T22:13:02.723 に答える