Ruby on Rails 如何从控制器注入 coffeescript 中的值
Ruby on Rails How to inject values from controller inside coffeescript
我在后端有控制器,并希望在 (coffee) 脚本中有变量,这些变量与模型一起发送到浏览器 - 但得到未定义的值。我做错了什么?我可以在模型中看到值。
控制器:
def show
@article = Article.find(params[:id])
end
脚本article.coffee.erb:
$ ->
$('#sendComment').click ->
id = "#{@article.id}"
console.log(id)
模型中:
%p
%strong Title:
#id
= @article.id
%p
%strong Title:
= @article.title
如果 @article
是控制器变量,您需要使用 <%= @article.id %>
erb 插值从控制器获取值。
$ ->
$('#sendComment').click ->
id = "<%= @article.id %>" # instead of "#{@article.id}" which is the CoffeeScript String interpolation.
console.log(id)
前端代码由浏览器解析,不知道控制器中的服务器端代码。资产编译一次,不会根据不同的请求而改变。你需要做的是在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
。不过重点还是很明确的。
我在后端有控制器,并希望在 (coffee) 脚本中有变量,这些变量与模型一起发送到浏览器 - 但得到未定义的值。我做错了什么?我可以在模型中看到值。
控制器:
def show
@article = Article.find(params[:id])
end
脚本article.coffee.erb:
$ ->
$('#sendComment').click ->
id = "#{@article.id}"
console.log(id)
模型中:
%p
%strong Title:
#id
= @article.id
%p
%strong Title:
= @article.title
如果 @article
是控制器变量,您需要使用 <%= @article.id %>
erb 插值从控制器获取值。
$ ->
$('#sendComment').click ->
id = "<%= @article.id %>" # instead of "#{@article.id}" which is the CoffeeScript String interpolation.
console.log(id)
前端代码由浏览器解析,不知道控制器中的服务器端代码。资产编译一次,不会根据不同的请求而改变。你需要做的是在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
。不过重点还是很明确的。