在Ruby on Rails項目中,我需要在Ajax調用結束時執行JavaScript函數。我的問題是,傳遞到被page.call調用的JavaScript函數的值將被包含在引號中。如果您傳遞字符串,但沒有太多問題,但其中一個值是JavaScript Array的字符串表示形式,即[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不能用引號括被作爲參數數據,或者我應該如何去了解這個數據傳遞給JS函數執行Ajax調用完成後?
感謝您的答覆,但..我想你沒有回答正確的問題。我的問題是與page.call( 「buildYUITreeView」, 「project_tree」,@ current_project.get_directory_contents(@ current_project.local_path,0)) 呼叫在RJS不是文件中的部分。 – 2009-08-02 04:03:28