如何将rails数据传递给JS或Coffeescript?

时间:2015-09-22 02:08:38

标签: javascript ruby-on-rails ruby coffeescript

我想从视图中获取文章ID。

<%= f.text_area :content, rows: 5, placeholder: 'input....', class: 'form-control',
    id: "tags", data: {article_id: @article.id } %>

然后将article_id传递给coffeescript:

$ ->
  id = $("#tags").data('article_id')
  console.log "test-----------#{id}"
  $("#tags").autocomplete(
    source:  '/articles/' + id + '/autocomplete.json')

但输出是:

test-----------undefined

如何将rails数据传递给JS或coffeescript?有多少种方法可以做到?

提前致谢!

as @muistooshort和@JoelL说:data: {article_id: @article.id} will produce data-article-id="xxxx"

html输出:

<textarea rows="5" placeholder="input..." class="form-control" id="tags" data-article-id="{&quot;$oid&quot;:&quot;560017ddbd172d16d6000001&quot;}" name="comment[content]">

但是我从浏览器控制台日志中获取了信息:

test----------[object Object]

它不是一个字符串。

3 个答案:

答案 0 :(得分:2)

data: {article_id: @article.id}将生成data-article-id="theid"

以下内容应该有效:

id = $("#tags").data('article-id')

答案 1 :(得分:1)

<强>更新

您可以在输入中手动添加,因为{}中包含data-article-id

<%= f.text_area :content, rows: 5, placeholder: 'input....', class: 'form-control', id: "tags", 'data-article-id': @article.id %>

对于Jquery:

尝试attr获取值属性:

id = $("#tags").attr("data-article-id")
console.log "test-----------"+id

对于coffeescript:

id = $("#tags").data("article-id")
console.log "test-----------"+id

答案 2 :(得分:-1)

试试这个

id = $("#tags").data('article_id')
console.log "test-----------"+id