我试图将Ruby嵌入JS.erb文件中,我希望能够访问@user对象及其所有关系。
Controller - user_controller
class UsersController < ApplicationController
def index
end
end
模型 - user.rb
class User < ActiveRecord::Base
attr_accessible :email, :first_name, :last_name
has_many :qualification_rs
end
查看 - Users.html.erb是空白的(我想纯粹从JS获取代码)
<html>
<body>
</body>
</html>
Javascript asset - users.js.erb
$(document).ready(function(){
<% @users.each do |user| %>
$('body').append(<% = user.first_name%>);
<%end%>
});
出现以下错误
“未定义的方法`每个'为nil:NilClass” 即它不识别js文件中的@users。 (它在user.html.erb文件中,我从中包含javascript标签。我还做了什么才能在js文件中识别实例对象?
答案 0 :(得分:1)
使用<%=
和%>
(以及ruby / rails doc)
$(document).ready(function(){
<% @users.each do |user| %>
$('body').append("<p><%= user.first_name %></p>");
<%end%>
});
答案 1 :(得分:0)
检查@users
是否存在
<% @users.each do |user| %>
$('body').append("<p><%= user.first_name %></p>");
<% end if @users%>
答案 2 :(得分:0)
我不确定这个问题是否过于清晰 - 这是最终决议。
我最终必须在Users.html.erb中包含JS内部的JS,而不是将JS作为assets / public中的单独文件包含在内。
@ users变量只能在views文件夹中的HTML文件中直接访问,而不能直接从assets目录访问。