jstreeで使用する4 jstree 1.0使用-元の不完全な箇所を修正


jqueryとjavascriptはプログラムの順位のために何の変化もなく、彼らは依然として十分な活力で、web開発の中で馬を走らせている.railsとrubyも同じで、タイムリーに鈍刀で、使い慣れて、それは牛を解くことができて、しかもこの2 Rはサッカー場のすべてのロナウドのように、鋭くて比類がありません.要するに、オープンのように、ソフトウェア開発者、チームの終身信条であることを堅持します.
くだらない話が山ほどありますが、ここではjstreeの前に採用したnodeを作成するトランスフォーム方法を修正します.
1.まずtreeを示す場合、すべてのnodeのstatusをclosedに設定できないことを明確にし、childがあればclosedに設定し、childがなければopenedに設定する.
privateメソッドを次のように変更します.
 
def get_region_tree_json(regions)
json_data = String.new
json_data += "["

regions.each do |region|
unless region.child_regions.blank?
json_data += "{\"data\":\"#{region.name}\",\"attr\":{\"id\":\"#{region.id}\"},\"state\":\"closed\"}"
else
json_data += "{\"data\":\"#{region.name}\",\"attr\":{\"id\":\"#{region.id}\"},\"state\":\"opened\"}"
end
json_data += "," unless region == regions.last
end
json_data += "]"
return json_data
end
 
 
 
2.上記の作業を行うだけで問題があります.作成したツリーノードが現れたり、消えたりして、作成に成功していないような気がします.リフレッシュすると、この新しいノードが安定して現れ、ライブラリに保存されていることを示します.ノードの削除、ノードの変更はすべてそうです.この3つのactionについて、次のように変更します.
 def create
    @region = Region.create(
      :parent_region_id=>params[:id],
      :name=>params[:name],
      :creator_id=>current_user.id
    )
    render :text =>"{\"id\":\"#{@region.id}\",\"status\":\"1\"}"
  end

  def update
    if Region.find(params[:id]).update_attributes(:name=>params[:name])
    render :text => "{ \"status\" : 1 }"
    else
    render :text => "{ \"status\" : 0 }"
    end

  end
  
  def destroy
    region = Region.find(params[:id])
    if region.child_regions.blank?
      if region.destroy
      render :text => "{ \"status\" : 1 }"
      else
      render :text=> "{ \"status\" : 0 }"
      end
    else
     flash[:notice] = "           "
    end
    
  end

 
renderコードを追加し、jsonフォーマットに合致するように送信します.
これらのデータはjavascriptのフロントエンドに着きました.
 
3.postというajaxメソッドでパラメータを構成する必要がある場合、functionの後にデータフォーマット「json」を構成し、前に漏れた構成内容を追加します.次はremoveのコードです.createもrenameもそうする必要があります.
    .bind("remove.jstree", function (e, data) {
      $.post(
      "/admin/regions/destroy",
      {
        "id" : data.rslt.obj.attr("id")
      },
      function (r) {
        if(!r.status) {
          $.jstree.rollback(data.rlbk);
        }
      },
      'json'
    );
    });

 
これで添削してもいいです.