我有一个rails应用程序,我想通过rails设置我的任务对象的一些默认值,并让knockout.js使用observables的默认值。
当前发生的事情是rails控制器的默认值很快被knockout.js observable命令中的空格替换。
这是我的rails控制器
def new
@task = Task.new
@task.task_date = Time.now
end
我的淘汰赛
Task = ->
@name = ko.observable()
@task_date = ko.observable()
我的表格
= f.text_field :task_date, "data-bind" => "value: name"
= f.text_field :task_date, "data-bind" => "value: task_date"
我是否必须从控制器传递JSON而不是使用默认的“render:new”?
我可以使用rails默认设置吗?
答案 0 :(得分:2)
如果我理解正确你正在渲染视图并且rails正在将值写入相关字段,那么将其绑定到DOM并删除字段,因为observable
没有值。
选项1& 3对于服务器来说很容易,只需要一个页面请求。客户端#1很简单,因为将数据映射到模型和绑定,而#3需要代码从标记中提取(即,如果您将数据放在元素的data-*
属性中),但可以提供更好的标记,但是更多的工作是提出一个方案,用于对考虑集合等的模型进行初始值绑定。
选项2需要两次旅行,一次是获取html,另一次是获取json,除非你在html get上添加代码跳过db,否则你的请求也会增加一倍。 ICK。
[编辑]
我还没有使用gon
宝石,RailsCasts的这个截屏显示了这些技巧:http://railscasts.com/episodes/324-passing-data-to-javascript