-1

以下に示すように、ユーザーのプロファイルページにアクセスしているユーザーが現在のユーザーであるかどうかを確認した後(rubyコードを使用)、条件付きロジックの結果に基づいてJavaScriptメソッドを呼び出すRailsアプリがあります。

ユーザーの名前(<%= @ 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コードに初めて表示され、エラー' Veronicaisundefined'を登録します。

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 に答える