1

Rails コードを使用して、一部の html および JS コードを mysql DB に入力しています。コードは DB からフェッチされ、構成可能なページにレンダリングされます。HAML ファイルでは、JS アラートで Ruby コードを使用すると、正常に動作します。

alert("#{user.id}")

このページにユーザー オブジェクトを渡すため、ID が表示されます。この行 alert("#{user.id}") を DB に保存して JS コードをレンダリングすると、#{user.id} が文字列として警告されます。DB からの文字列が単なる文字列ではなく、ページ上でユーザー オブジェクトを取得するときに解釈する必要がある Ruby コードであることを認識させるにはどうすればよいですか。したがって、単純な文字列「#{user.id}」を表示する代わりに、5 または 6 などの実際の ID を表示する必要があります。

助けてください

4

3 に答える 3

1

構文 ( など) を変更しても問題ない場合はalert("<%= user.id %>")、ERB または他の同様のテンプレート エンジンを使用できます。

これをERBで行う方法は次のとおりです。

require 'erb'
user_id = 23
str = 'alert("<%= user_id %>")' # get these from the database
ERB.new(str).result(binding)

これは、ユーザーが実際に ERB 内からコードを実行できることを意味するため、危険であることに注意してください。

これを回避するには、別のテンプレート言語を使用することをお勧めします。

以下にいくつかのオプションを示します。

于 2012-06-20T09:05:32.937 に答える
0

Rails から JS にデータを渡すにはいくつかの方法があります。こちらのビデオを参照してください。

http://railscasts.com/episodes/324-passing-data-to-javascript?view=comments

于 2012-06-20T08:23:28.123 に答える
0

個人的には、データをビューの非表示フィールドに保存してから、jQuery で操作します。

=form_for :user do |f|
  =f.hidden_field :id  

次にJavaScriptで

$('document').ready ->
  alert $('#user_id').val()
于 2012-06-20T08:54:00.950 に答える