Rails では:remote => true
、Web アプリケーションをリモート呼び出しするように設定できます。.js.erb
次に、 to changes 要素で応答できます。シナトラでこれを作成するにはどうすればよいですか? リソースでリモート削除を行い、成功した場合は Dom を更新し、そうでない場合はエラーをスローします。
質問する
1116 次
1 に答える
5
Rails では:remote => true
、ヘルパーを使用して設定するlink_to
と、次の出力が得られます。
<a href="#yoururl" data-remote="true">Linktext</a>
このリンクは、rails.js
次のような方法で確認できます。
$(document).on('click.remote', '[data-remote]', function() {
$.ajax({
url: $(this).attr('href'),
type: $(this).data('method') || 'GET',
// and so on...
});
});
したがって、実際に行うことは、HTML
リンクをdata-remote="true"
属性でマークし、 を介して処理することjs
です。js.erb
応答できるテンプレートは、DOM
. (これは個人的には悪い考えだと思います)。
Sinatra でも、ほとんど同じことができます。たとえば、remote
クラスを使用してリンクをマークします (これにより、Rails が を介して使用するものよりも高速な js のルックアップが提供されます) [data-remote]
。
<a href="#yoururl" class="remote">Your Link Text</a>
次に、jQuery を介してリモート クラスを持つリンクをバインドします。Rails と同じように、リモート クラスを持つ要素から発生するクリック イベントのドキュメント全体を観察します。
$(document).on('click.remote', '.remote', function() {
// a similar ajax call to the one rails uses
});
JSON
次に、 insinatra
およびで応答しSinatra::JSON
ます。
get '/yoururl' do
json :foo => 'bar'
end
そして、ajax 呼び出しの成功ハンドラーでデータを好きなように処理します。または、erb で記述されたスクリプトで応答することもできます (これは rails が で行うことです.js.erb
):
get '/yoururl' do
erb :"answer.js"
end
于 2013-02-18T13:38:52.527 に答える