2

ruby 関数を作成して js ファイルに配置したい場合、js 関数は ruby​​ 関数を呼び出して戻り値を格納できる必要があります。

出来ますか?このタスクを行う方法は?

4

4 に答える 4

2

私はそれが不可能だと思います、いくつかの理由があります:

  1. ブラウザは Ruby をサポートしていません
  2. JavaScript と Ruby は型のシステムが異なり、それらの間のインターフェースがわかりません
  3. また、このようなファイルには MIME タイプがないため、JavaScript コードと Ruby コードを 1 つのファイルに配置することはできません。

ですから、Ruby 関数を JavaScript 関数に変換する必要があると思います。

または、Ruby 関数をサーバー API の一部として実装し、Ajax によって JavaScript から呼び出すこともできます。

于 2012-07-27T07:15:08.853 に答える
2

必要な実装は、いつ Ruby コードまたは関数を呼び出すかによって異なります

  1. ページまたは js の作成中またはレンダリング中ですか?

    次に、js を .erb 拡張子で使用できます (スーパー エンジニアの提案による)。これにより、ビューとアプリケーション ヘルパーで利用可能な任意の Ruby コードと関数を呼び出すことができます。

    eg demo.js.erb

    var arr = "<%= call_function %>"
    
  2. You need the function from client side? Then it is impossible to call the function directly, You need to use ajax for such scenarios. (as suggested by Spernsky Danil)

于 2012-07-27T08:24:44.837 に答える
1

JavaScript はクライアント側の言語であり、Ruby はサーバー側の言語です。これらは互いに直接呼び出すことはできません。サーバー側とクライアント側の間の通信には、代わりに AJAX または WS を使用します。

于 2012-07-27T07:17:14.903 に答える
0

js.erbファイルを使用できます。Rubyコードを含めることができます。私のプロジェクトのこのコード スニペットを見てください。

$("#myModal").modal('hide');
<% if @status == "ok" %>
  <%= add_gritter("We will contact you as soon as possible!", :image => :success, :class_name => "gritter-light") %>
<% else %>
  <%= add_gritter("Something went wrong while saving you request. Please try again!", :image => :error, :class_name => "gritter-light") %>
<% end %>
于 2012-07-27T08:10:11.477 に答える