コントローラーは、POST 要求を介して、AJAX を使用して押されたボタンに応じて異なるページを表示する必要があります。
# POST /site_device/1
def show_page
@site_device = SiteDevice.find(params[:id])
respond_to do |format|
format.js
format.json { STDERR.puts "JSON!"; render 'show_page.js.erb' }
end
end
コントローラー コード #show page が実行され、json ビュー テンプレート (下記) が呼び出されます。
<% STDERR.puts "got_here" %>
$('#device-data').html("<h1>Foo!</h1>" ).trigger('create');
STDERR
サーバー上で行が出力されているため、上記のコードが呼び出されていることがわかります。
ブラウザー (Chrome) では、コンソールを使用して、ビュー テンプレートのコードが正しく実行されるかどうかをテストできます。実際に実行$('#device-data').html("<h1>Foo!</h1>" ).trigger('create');
されます。Google Chrome コンソールに入ると、html が「Foo!」で再レンダリングされます。正しい場所に。
ただし、ここに当惑するビットがあります。サーバーで実行されているコードがブラウザで受信されていないように見えるか、受信されている場合でも、実行されていないか、レンダリングされていません。
他の誰かに同様の問題/問題がありましたか?