2

したがって、このRailsCastのように生成されるデータテーブル(きれいなテーブルを作成するためのJavaScriptライブラリ)を含むビューがあります。 簡単に言えば、データテーブルはサーバー側で作成され、新しいクラスはビューでレンダリングされるjson応答を作成します

したがって、生成されたビューには、クリックしたときに ajax イベントをトリガーするリンクがあり、データ属性があります。

 link_to( "#{sir.sir_id}" , '#', :data => {'sir-id' => sir.id}, remote: true )

次のようにして、coffeescript でそのデータ属性の値をフェッチします。

  $("a[data-sir-id]").click ->
   data_sir_id = $(this).data("sir-id")

これは正常に動作します

その値 (sir-id) をコントローラーで使用できるようにして、関連するモデル オブジェクトを取得し、ajax を介して同じビューに表示できるようにします。別のデータ テーブルのコンテンツを埋めます (これはサーバー側を必要としません)。処理)

この新しいデータテーブルを ajax ソースで作成してフィードするにはどうすればよいですか?

コントローラーで sir_id を使用できれば、他の json オブジェクトをビューに返すことができると思いますが、ビューは最初に作成されたときに既に json をレンダリングしています。

4

1 に答える 1

1

post メソッドを使用して、コントローラーにデータを送信できます。

$("a[data-sir-id]").click ->
  data_sir_id = $(this).data("sir-id")
  $.ajax
    type: 'POST'
    url: '/some-path'
    data: {sir_id: data_sir_id}
    success: console.log('success posting sir-id')
    dataType: 'json'

#config/routes.rb
Rails.application.routes.draw do
  post "/some-path", to: "some_controller#some_view"
end

#app/controllers/some_controller.rb
class SomeController < ApplicationController
  def some_view
    SomeModel.find_by_sir_id(params[:sir_id])
  end
end

ビューファイルで「#{sir.sir_id}」を使用してlink_toを形成できる場合、コントローラーでsir_idが既に利用可能であり、ajaxを使用する必要はないように思われます. それでも、この ajax ソリューションがあなたが探していたものであることを願っています :)

于 2015-08-09T04:23:47.907 に答える