如何将变量从javascript(coffeescript)传递到rails控制器?

如何将变量从javascript(coffeescript)传递到rails控制器?,javascript,ruby-on-rails,coffeescript,Javascript,Ruby On Rails,Coffeescript,我想这应该很简单,但我想不出来 我认为有一个链接我想触发一些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") 因此,我需要控制

我想这应该很简单,但我想不出来

我认为有一个链接我想触发一些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")
因此,我需要控制器中该变量(data_sir_id)的值,这样我就可以获取其关联的模型对象并在同一视图中渲染它们


如何实现这一点?

您不需要将数据存储在数据属性中,也不需要在单击链接时进行ajax调用:
link\u to
为您提供了创建链接和传递参数的好方法

通过使用,
remote:true
,它将在不进行任何其他配置的情况下执行ajax调用

link_to("#{sir.sir_id}", path_to_the_controller_action(sir_id: sir.id), remote: true)

然后,在您的控制器操作中,您的数据将在
参数[:sir_id]

中访问,这里是
链接到
中,您已将url作为
'.#'
传递,因此,如果您可以添加特定操作,则可以继续

否则,您可以使用以下选项:

要在视图中指定链接,可以将其用作

link_to "#{sir.sir_id}", '#', remote: true, 'sir-id' => sir.id, class: 'sir_id_link'
在咖啡脚本中:

$ ->
  $("sir_id_link").live "click", ->
  data_sir_id = $(@).attr("sir-id")
  $.ajax
    url: any_url
    type: "PUT"
    data:
      sir_id: data_sir_id
    success: (data) ->
      ...
现在在控制器操作中,您可以作为params[:sir_id]访问它

希望这对你有帮助

谢谢