3

ビューに ajax リンクがあり、実際のアクションに送信される前にパスワードを確認したいのですが、devise コントローラーを使用しているため、特定のパスワード チェックの使用に制限されています。以下は、検証に使用したいコーヒー スクリプトです。

.<%= link_to "CANCEL PAYMENT", { :action => "some_action", :info => n.id },class: "css_class",:remote => true %>

上記のリンクを使用しています

次のようなコードを探しています。

$("a.css_class").live "click", ->
      password_variable = prompt("Enter password", "password")
      if |ruby-code|current_user.valid_password?(password_variable)|ruby-code|
        true
      else
        alert "You entered wrong password"
        false

ルビーコードはコーヒースクリプトミックスでどのように動作しますか.

4

2 に答える 2

4

それが静的アセットのコードである場合、サーバー側のダイナミクスをその中に入れることができないのは明らかです。プレーンなJavaScriptスニペットに変換され、アプリのpublicフォルダーに配置されます。

* .coffeeというビューがある場合は、すでにすべての準備が完了しています。このように名前が付けられたビューは、ERbエンジンで自動的に前処理されます(経由<%= ... %>):

ビュー/some/thing.coffee :

alert "Server's time is <%= Time.now %>"
于 2012-11-30T17:37:32.287 に答える
0

私も同じ疑問を持っていました。

バックグラウンド:

私は自分の会社の ERP を書いています。スペイン語、英語、日本語のメッセージを使用します。

私はcoffeescript、haml、scss、NO ERBを使用しています

したがって、多言語メッセージはすべてのビューで正常に機能しますが、ブラウザの醜いドロップボックスをドロップダウン リスト付きの素敵なコンボボックスに置き換えるための .js ライブラリを追加し、ローカル言語でメッセージを保持するためにハッシュを使用します。

だから私がしたことは:

_form.html.haml

:coffeescript
  menssages_for_select2 [
    "#{I18n.t('select.formatNoMatches')}"
    "#{I18n.t('select.formatInputTooShort')}"
    "#{I18n.t('select.formatInputTooLong')}"
    "#{I18n.t('select.formatSelectionTooBig')}"
    "#{I18n.t('select.formatLoadMore')}"
    "#{I18n.t('select.formatSearching')}"
  ]

ビューでこれを行うので、I18n ライブラリにアクセスできます。.js.coffee 内の I18n ライブラリにアクセスしようとすると失敗します

mycode.js.coffee

@mensajes_select2 = (txt) ->
  $.extend $.fn.select2.defaults,
    formatNoMatches: ->
      txt[0]
    formatInputTooShort: (input, min) ->
      txt[1]
    formatInputTooLong: (input, max) ->
      txt[2]
    formatSelectionTooBig: (limit) ->
      txt[3]
    formatLoadMore: (pageNumber) ->
      txt[4]
    formatSearching: ->
      txt[6]
于 2014-05-24T03:55:07.677 に答える