0

ビューで次の JS コードを使用して、2 つの変数「user_name」と「user_uid」を計算します。

<script type="text/javascript">
function f1() {
.
.
.
user_name = "some variable";
user_uid = "another variable";
});
}
</script>

「user_name」と「user_uid」という 2 つの変数をコントローラーに送信したいと思います。次のコードを使用します。

<%= link_to "GO!", new_user_path(:userName => user_name, :userUid => user_id), :remote=> true %> 

私のコントローラーとモデルは正常に動作します。しかし、2 つの変数は JS から上記の埋め込み Ruby コードに渡されません。私が間違っていることについての指針をいただければ幸いです。ありがとう!

4

1 に答える 1

6

最大の間違いは、コードが実行される場所がわからないことです。

  • 内部のコード<%= ... %>Erbマーカー)は、クライアントがHTMLを表示する前に、サーバー上で実行されます。
  • JSは、サーバーから送信された後、クライアントで実行されます。

Ruby変数を使用してJS変数値を作成するなど、いくつかのオプションがあります。それが最適なオプションであるかどうかによって異なります。例えば:

function f1() {
  var user_name = "<%= escape_javascript(a_ruby_variable) %>";
  // Or, more concisely:
  var user_uid = "<%=j another_ruby_variable %>";

Ruby変数は、テンプレート、コントローラーなどで初期化できます。

繰り返しますが、そうあるべきかどうかは議論の余地があります。

于 2012-07-12T23:15:39.417 に答える