2

所以我有一个视图,其中包含一个像在这个 RailsCast中一样生成的数据表(用于创建漂亮表的 JavaScript 库)简而言之,数据表 是在服务器端创建的,一个新类创建一个在视图中呈现的 json 响应

所以在我生成的视图中,我有一个链接,我想在点击时触发一个 ajax 事件,并且有一个 data 属性,

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

我以这种方式在咖啡脚本中获取该数据属性的值:

  $("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 回答