【问题标题】:Only want javascript to execute on a specific Rails view只希望 javascript 在特定的 Rails 视图上执行
【发布时间】:2017-03-29 21:53:29
【问题描述】:

我在/assets/javascripts/transactions.coffee 中有一些咖啡脚本,它使用dd/mm/yy 格式的今天日期填充一个文本字段(/views/transactions/_form.html.erb)。

$ ->
    today = new Date
    dd = today.getDate()
    mm = today.getMonth() + 1
    #January is 0!
    yyyy = today.getFullYear()
    if dd < 10
      dd = '0' + dd
    if mm < 10
      mm = '0' + mm
    today = dd + '/' + mm + '/' + yyyy
    $('#transaction_date').val today

$ ->
    $('#transaction_date').datepicker({dateFormat: "dd/mm/yy"})

目前,/views/transactions/new.html.erb/views/transactions/edit.html.erb 中引用了该表单。但是,我只希望在 new.html.erb 而不是 edit.html.erb 上填充文本字段。

在 Rails (4.2.5) 中实现这一目标的“最干净”的方法是什么?

【问题讨论】:

  • @guiniveretoo 我已经添加了版本号(4.2.5)。我希望有更好的方法来实现这一点。
  • 该重复问题有 9 个答案。你都试过了吗?什么使新解决方案更好?编辑您的问题以澄清为什么这些解决方案不可接受或为什么您的问题不重复。

标签: javascript ruby-on-rails coffeescript


【解决方案1】:

也许您可以在transactions.coffee 中创建您从视图中使用内联脚本调用的函数。例如,在transactions.coffee

this.App || (this.App = {})
this.App.Transactions =
    runForNewView: () ->
        today = new Date
        dd = today.getDate()
        mm = today.getMonth() + 1
        #January is 0!
        yyyy = today.getFullYear()
        if dd < 10
          dd = '0' + dd
        if mm < 10
          mm = '0' + mm
        today = dd + '/' + mm + '/' + yyyy
        $('#transaction_date').val today

然后例如在新的视图模板中,您只需添加

<script text="text/javascript">
    $(function() { App.Transactions.runForNewView(); });
</script>

【讨论】:

    猜你喜欢
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多