我的视图上有ajax链接,我想在发送到实际操作之前检查密码,因为我使用的是设计控制器,我只能使用特定的密码检查。 以下是我希望用于验证的咖啡脚本。
。<%= 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
红宝石代码如何与咖啡脚本混合使用。
答案 0 :(得分:4)
如果它是您静态资产的代码,那么显然您将无法将一些服务器端动态放入其中。它将被转换为纯JavaScript代码段并放入应用的public
文件夹中。
如果您的视图名为* .coffee,那么您已经完成了所有准备工作。以这种方式命名的视图将使用ERb引擎(通过<%= ... %>
)自动预处理:
/some/thing.coffee:
alert "Server's time is <%= Time.now %>"
答案 1 :(得分:0)
我有同样的疑问。
背景:
我正在为我的公司编写ERP。它使用西班牙语,英语和日语的消息。
我正在使用coffeescript,haml,scss,NO ERB
因此,多语言消息在我的所有视图中都能正常工作,但是,我添加了一个.js库,用一个带有下拉列表的漂亮的组合框替换浏览器的丑陋的dropbox,它使用哈希来保存本地语言中的消息。
所以我做的是:
_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]