-1

我有一个 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 %>;

但是,一旦 <%= @user.name %> 评估(在本例中为“Veronica”),Veronica 将首次出现在 js 代码中,现在正在注册错误“Veronica 未定义”

4

2 回答 2

1

我相信你正在寻找这个:http ://api.rubyonrails.org/classes/ActionView/Helpers/JavaScriptHelper.html#method-i-escape_javascript

给出的例子:

$('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>
于 2013-03-16T21:03:33.977 回答
0

内联 Ruby 必须进入 #{} 标签。

var currentusername =  '#{ <%= @user.name %> }';
于 2013-03-17T19:37:24.970 回答