Ruby on Rails 如何在 coffeescript 中从控制器注入值



我在后端有控制器,并希望在(咖啡(脚本中具有变量,这些变量与模型一起发送到浏览器 - 但得到了未定义的值。 我做错了什么?我可以在模型中看到值。

主持人:

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)