Ruby on Railsプロジェクトでは、Ajax呼び出しの最後にJavaScript関数を実行する必要があります。私の問題は、page.callで呼び出されるJavaScript関数に渡される値が引用符で囲まれていることです。文字列を渡す場合はそれほど問題にはなりませんが、値の1つはJavaScript配列の文字列表現、つまり[0,1,2,3]です。
これが私が感じる重要なコードスニペットです。
選択ドロップダウンリストを監視するobserve_fieldがあります。
<%= observe_field("project_select_list",
:loading => "Element.show('tree_indicator')",
:complete => "Element.hide('tree_indicator')",
:url => {:controller => "projects", :action => "change_project"},
:with => "id")
%>
project_controllerで
def change_project()
@current_project = Project.find(params[:id])
end
そしてchange_project.rjsで
page.replace_html("project_name", @current_project.name)
page.visual_effect(:highlight, "project_name")
page.call("buildYUITreeView", "project_tree", @current_project.get_directory_contents(@current_project.local_path, 0))
最後の値:
@current_project.get_directory_contents(@current_project.local_path, 0))
私に問題を引き起こしているものです。[0,1,2,3]などの値を送信したいのですが、「[0,1,2,3]」を送信しているため、JSが爆発します。
このパーシャルは、ページに配置されるJavaScriptコードに文字列ではなくデータを送信するという点で、想定されていることを実行します。
<% javascript_tag do -%>
YAHOO.util.Event.addListener("dom:loaded", "load", buildYUITreeView("<%= tree_id %>", <%= project.get_directory_contents(project.local_path, 0) %>));
<% end -%>
これを念頭に置いて、パーシャルを使用して、必要なときにJS関数を呼び出すためにレンダリングするだけで遊んでいますが、それはそのようなハックのようです。
page.callでパラメーターとして送信されたデータを引用符で囲まないようにするにはどうすればよいですか、またはAjax呼び出しの完了後にこのデータをJS関数に渡して実行するにはどうすればよいですか?