我在后端有控制器,并希望在(咖啡(脚本中具有变量,这些变量与模型一起发送到浏览器 - 但得到了未定义的值。 我做错了什么?我可以在模型中看到值。
主持人:
def show
@article = Article.find(params[:id])
end
脚本文章.咖啡.erb:
$ ->
$('#sendComment').click ->
id = "#{@article.id}"
console.log(id)
在模型中:
%p
%strong Title:
#id
= @article.id
%p
%strong Title:
= @article.title
前端代码由浏览器解析,并且不知道控制器中的服务器端代码。资产编译一次,不会根据不同的请求进行更改。你需要做的是在 HTML 标签中添加文章 ID,然后在你的 JS 代码中获取它:
<%= tag.p data: { "article-id": @article.id } %>
然后在 JS 中:
$('p').click( (event) ->
id = $(event.target).data('article-id')
console.log(id)
)
不清楚您的视图代码中#sendComment
在哪里,所以我将其更改为p
此处。但无论如何,重点很清楚。
如果@article
是控制器变量,则需要使用<%= @article.id %>
ERB插值从控制器获取值。
$ ->
$('#sendComment').click ->
id = "<%= @article.id %>" # instead of "#{@article.id}" which is the CoffeeScript String interpolation.
console.log(id)