在coffeescript中如何在控制器中创建变量并通过ajax返回结果以填充数据表?

时间:2013-10-26 11:45:11

标签: ajax json datatable coffeescript

所以我有一个数据表(用于创建漂亮表格的javascript库)的视图,就像在this RailsCast中一样生成 简而言之,数据表是在服务器端创建的,而新类创建了一个在视图中呈现的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对象返回给视图。

1 个答案:

答案 0 :(得分: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

我想说的是,如果你可以用&#34;#{sir.sir_id}&#34;形成一个link_to。在你的视图文件中,在我看来,你的控制器中已经可以使用sir_id了,你不需要使用ajax。不过,我希望这个ajax解决方案正是你所寻求的:)