Javascript 将信息从ruby传递到js脚本标记
我有一个Rails应用程序,它在检查访问用户配置文件页面的用户是否是当前用户(使用ruby代码)后,根据条件逻辑的结果调用JavaScript方法,如下所示 有没有一种方法可以将用户名(在ruby代码中提供)传递到脚本标记中,这样我就可以将其传递到被调用的javascript函数中(除了我传递的其他参数之外) /views/users/show.html.erbJavascript 将信息从ruby传递到js脚本标记,javascript,ruby-on-rails,Javascript,Ruby On Rails,我有一个Rails应用程序,它在检查访问用户配置文件页面的用户是否是当前用户(使用ruby代码)后,根据条件逻辑的结果调用JavaScript方法,如下所示 有没有一种方法可以将用户名(在ruby代码中提供)传递到脚本标记中,这样我就可以将其传递到被调用的javascript函数中(除了我传递的其他参数之外) /views/users/show.html.erb <% if current_user?(@user) %> #@user represents the user who'
<% if current_user?(@user) %> #@user represents the user who's profile page is being visited
<script type='text/javascript'>
$(document).ready(function() { #I want to get <%= @user.name %> inside here
var currentuser = true;
app.views.user_view.compTemplates(currentuser)});
</script>
<% else %>
...code ommitted...
<% end %>
#@user表示正在访问其个人资料页面的用户
$(document).ready(function(){#我想进入这里
var currentuser=true;
app.views.user\u view.compTemplates(currentuser)});
…代码已写入。。。
更新:
根据这个问题的第一个答案的建议,我在脚本标签中做了这项工作
var currentusername = <%= @user.name %>;
var currentusername=;
然而,一旦评估(在本例中为“Veronica”),Veronica第一次出现在js代码中,并且现在注册了一个错误“Veronica未定义”我相信您正在寻找这个: 举例如下:
$('some_element').replaceWith('<%=j render 'some/element_template' %>');
内联Ruby必须进入#{}标记中
var currentusername='#{}';
谢谢,我尝试了您所做的,并将其作为参数传递给compTemplates方法——compTemplates(currentuser,userName)——但当我在接收它的视图中执行consolelog(userName)时,它表示用户名(即已计算的实际用户名,而不是变量userName)“未定义”。你能解释一下原因吗?你能确认@user确实有名字吗?(print@user.inspect
)可能在模板中(而不是脚本部分)?另外,您是否尝试过escape\u javascript
?你能检查一下这个物体吗<代码>警报(JSON.stringify(用户名))。我们试图找到它失败的地方;在show.html.erb页面中,它说“Veronica”(@user.name)在javascript控制台中是未定义的。我也这样做了,但有相同的问题。stringify(userName)变量(在我分配它之后)我什么都不知道。计算完成后,计算名称(Veronica)第一次出现在js代码中,而且之前没有定义过,因此“Veronica”是“未定义的”
$('some_element').replaceWith('<%= escape_javascript render 'some/element_template' %>');
<script type='text/javascript'>
$(document).ready(function() {
var currentuser = true;
var userName = <%= @user.name.to_json %>;
app.views.user_view.compTemplates(currentuser)});
</script>
var currentusername = '#{ <%= @user.name %> }';