我想这应该很简单,但我无法弄清楚
我认为有一个链接我想触发一些ajax:
link_to( "#{sir.sir_id}" , '#', :data => {'sir-id' => sir.id}, remote: true ),
在我的coffeescript中,我可以像这样在链接中获取data-attribute的值:
$ ->
$("a[data-sir-id]").click ->
data_sir_id = $(this).data("sir-id")
所以我需要在我的控制器中使用该变量的值(data_sir_id),这样我就可以获得相关的模型对象并在同一个视图中呈现它们
我怎么能实现这个目标?
答案 0 :(得分:1)
您无需将数据存储在数据属性中,也无需在点击链接时进行ajax调用:link_to
为您提供了一种创建链接和传递参数的好方法。
通过使用remote: true
,它将在没有任何其他配置的情况下执行ajax调用。
link_to("#{sir.sir_id}", path_to_the_controller_action(sir_id: sir.id), remote: true)
然后,在您的控制器操作中,您的数据可以在params[:sir_id]
答案 1 :(得分:1)
在link_to
中您已将网址传递为'#'
,因此,如果您有可以添加的特定操作,则可以by above way
否则您可以使用以下内容:
要在视图中指定链接,可以将其用作
link_to "#{sir.sir_id}", '#', remote: true, 'sir-id' => sir.id, class: 'sir_id_link'
在coffeescript中:
$ ->
$("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]访问。
希望这会对你有所帮助。
感谢。