javascript - Rails 3 jQuery UI Datepicker 希望仅启用特定日期

标签 javascript ruby-on-rails ruby-on-rails-3 jquery-ui ruby-on-rails-3.1

我有一个使用日期选择器的注册模型和表单。我希望用户只能选择与事件相对应的日期(另一个模型)。

我的问题是我找不到将事件数组传递给 JavaScript 的正确方法。

这是在 Controller 中:

@available_dates = Event.pluck(:start_time).as_json

这是在 View 中:

    <script>
       var availableDates = [<%= @available_dates.to_s.html_safe %>] ;
    </script>

这是 js:

function available(date) {
    ymd = date.getFullYear() + "-" + ('0' + (date.getMonth()+1)).slice(-2) + "-" + ('0' + date.getDate()).slice(-2);
    console.log(ymd+' : '+($.inArray(ymd, availableDates)));
    if ($.inArray(ymd, availableDates) != -1) {
        return [true, "","Available"];
    } else {
        return [false,"","unAvailable"];
    }
}
$("#registration_date").datepicker({ beforeShowDay: available, dateFormat: "yy-mm-dd"});

我认为我在 View 中做错了什么,因为从控制台看,js 数组似乎是空的......

任何帮助将不胜感激

最佳答案

在您提到的问题评论中 @available_dates.to_s 返回 "[\"2013-01-05\",\"2013-02-02\",\"2013 -03-02\"]"。这本身会将数组呈现在页面上,因此无需再次“装箱”。

尝试更改以下行:

var availableDates = [<%= @available_dates.to_s.html_safe %>] ;

对此:

var availableDates = <%= @available_dates.to_s.html_safe %>;

希望有帮助。

如果不是,您要么在代码中进一步清除 @available_dates 的值,要么 @available_dates 在您的 View 上下文中不可用。您是否尝试过使用 debugger; 单步调试代码?

关于javascript - Rails 3 jQuery UI Datepicker 希望仅启用特定日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14100927/

相关文章:

javascript - 如何将字符串转换为 typescript 中的对象

ruby-on-rails - 如何使用 RJS 模板临时禁用表单

javascript - 将 .rotatable 添加到对象会将其初始度数返回为 0

javascript - 打印数组元素并将它们添加到 javascript 中

javascript - 停止 element.style 覆盖我的 css 样式

ruby-on-rails - 大文件上传

html - rails 的正确 CSS 文件模板应该是什么样子的?

ruby-on-rails - Netbeans 上的 Rails : Uncaught exception: no such file to load -- script/server or script/console

ruby-on-rails - Rails 局部 View 中的动态数据

javascript - jquery autocomplete this.source is not a function 错误