我有一个Rails应用程序,在检查访问用户的个人资料页面的用户是否是当前用户(使用ruby代码)之后,根据条件逻辑的结果调用JavaScript方法,如下所示。
有没有办法将用户名(在<%= @ user.name%>的ruby代码中提供)传递到脚本标记中,这样我也可以将其传递给javascript函数调用(除了我传递的其他参数)。
/views/users/show.html.erb
<% 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 %>
更新
根据对此问题的第一个答案的建议,我在脚本标记内执行了此操作。
var currentusername = <%= @user.name %>;
然而,一旦&lt;%= @ user.name%&gt;评估(对于'Veronica',在这个例子中),Veronica第一次出现在js代码中,现在正在注册错误'Veronica is undefined'
答案 0 :(得分:1)
给出的例子:
$('some_element').replaceWith('<%=j render 'some/element_template' %>');
或
$('some_element').replaceWith('<%= escape_javascript render 'some/element_template' %>');
对于您的特定示例,您也可以这样做:(我认为不需要to_json
)
<script type='text/javascript'>
$(document).ready(function() {
var currentuser = true;
var userName = <%= @user.name.to_json %>;
app.views.user_view.compTemplates(currentuser)});
</script>
答案 1 :(得分:0)
内联Ruby必须进入#{}标记。
var currentusername = '#{ <%= @user.name %> }';