2012-05-02 9 views
1

私は自分のタスクオブジェクトにレールを使っていくつかのデフォルト値を設定し、knockout.jsにオブザーバブルのデフォルトを使用させるためのレールアプリを持っています。Knockout.js - レールコントローラを使って初期値を設定する

現在のところ、レールコントローラのデフォルトは、knockout.js observableコマンドのブランクにすばやく置き換えられます。ここで

は私のレールコントローラである

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を渡す必要があります:新しい"?

レールのデフォルトを使用することはできますか?

答えて

2

私が正しく理解していれば、レールは問題のフィールドに値を書き込んでおり、ノックアウトしてDOMにバインドし、observableに値がないのでフィールドを空白にします。

  1. は、ページのマークアップ内の値をレンダリングし、モデル
のためにこれらの値を抽出取得するために、AJAXを介した往復をするJSON
  • としてページでモデルの値をレンダリング

    オプション1 & 3はサーバーでは簡単で、ページに対して1つのリクエストのみが必要です。クライアント側の#1は、データをモデルにマッピングしてバインドするときにシンプルですが、#3ではマークアップからコードを抽出する必要があります(つまり、要素のdata-*属性にデータを配置している場合)コレクションなどを考慮したモデルへの価値の初期バインディングを行うためのスキームが必要です。

    オプション2は、2つのトリップまた、html getにdbをスキップするコードを追加しない限り。 Ick。

    [編集] アクションでこれらの技術を示しRailsCastsから、私が使用していないgon宝石と、このスクリーンキャストもあります:http://railscasts.com/episodes/324-passing-data-to-javascript

  • +0

    オプション1であなたは私の日に第二のデータ要素を作成する意味ですか"data-initial" => @ task.task_dateのようなフィールドを作成し、これを$( "#task_task_date")で観測可能なものに読み込みます。 – map7

    +0

    更新 - gon gemをチェックし、RailsCastエピソード324を見てください - それはこれらのテクニックを示しています。ノックアウトに特化したものではありませんが、ノックアウトによって消費される可能性のあるクライアントにモデルデータを取得する方法を示します。 – craigb

    関連する問題