Ruby on Railsプロジェクトでは、Ajax呼び出しの最後にJavaScript関数を実行する必要があります。私の問題は、page.callで呼び出されるJavaScript関数に渡される値が引用符で囲まれていることです。文字列を渡しても問題はありませんが、値の1つはJavaScript配列の文字列表現、つまり[0,1,2,3]です。値を引用せずに、RailsのRJSからjavascript関数呼び出しにオブジェクトを渡しますか?
ここで私はコードの重要なスニペットだと感じているものです。
私は、選択ドロップダウンリストを監視する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関数に渡す方法を教えてください。
回答ありがとうございます。私はあなたが正しい質問に答えなかったと思います。私の問題はpage.call( "buildYUITreeView"、 "project_tree"、@ current_project.get_directory_contents(@ current_project.local_path、0)) 部分的ではないRJSファイルでの呼び出しです。 –
申し訳ありませんが、私は十分に近く読まなかった。答えを編集する。 – tom