13

インデックス ページ全体を更新せずに「mydiv」のコンテンツを更新しようとしています。@mydata は mycontroller によって与えられます。n秒ごとに再計算して「mydiv」に渡す必要があります

「link_to」で動作します!

index.html.erb

<%=
    link_to('refresh', '/mycontroller/index', :remote => true)
%>

<div id="mydiv">
    <%=
        @mydata
    %>
</div>

index.js.erb

$('#mydiv').html('<%= escape_javascript(@mydata) %>')

ここで、「mydiv」のコンテンツをn秒ごとに自動的に更新する必要があります (リンクをクリックせずに)。私は次の解決策を試しました:

しかし運がない。

私のapplication.jsでは、これを書きました:

function executeQuery() {
  $.ajax({
    //url: '/index',
    success: function(data) {
      $('#mydiv').html(data)
    }
  });
  setTimeout(executeQuery, 500);
}

$(document).ready(function() {
  setTimeout(executeQuery, 500);
});

私と同じ問題に直面している人のために、私はそれを置き換えることで解決しました

$('#mydiv').html(data)

$('#mydiv').load('/mycontroller/index #mydiv')
4

2 に答える 2

0

アクションでレイアウトを false に設定し、ページ全体ではなく、関連するコンテンツのみを渡します

def action1
   <your code here>
end
def action2
   <your code here>
   render :layout => false
end

action2 のビューには、#mydiv のみに関連するコンテンツが含まれている必要があります。

より良い解決策は、単一のアクションを使用し、リクエストのタイプに基づいてレンダリング オプションを変更することです。(Ajax または非 ajax)

于 2014-12-01T13:38:00.483 に答える