2011-03-01 83 views
0

我有我的控制器的動作呈現JSON返回給客戶端:產生控制器(導軌)URL

@data = [{label:"foo", url:"..."}, ...] 

render :json => @data 

基本上「數據」是每個有標籤和url屬性對象的數組。希望在服務器端生成URL,而不是將此數據傳遞給客戶端,並讓它遍歷它以生成URL字符串。

如果我能使用 「的link_to」 的方法,將是這樣的:

的link_to 「foo」 的,{:動作=> 'some_action',:foobar的=> {}}

基本上鍊接到/ foobar/some_action

在控制器中生成URL的最佳方式是什麼,因爲我沒有方便的「link_to」方法?

回答

4
+0

我選擇了這個作爲答案B/C它也會讓我指定我需要的協議(http,https)。然而,我沒有測試link_to是否會根據HTTP請求來選擇正確的協議。謝謝你的答案。 – codecraig 2011-03-03 10:43:57

+0

謝謝。請注意,我建議url_for,因爲我認爲你只需要一個URL,而不是返回link_to的鏈接標記。實際上,link_to使用url_for來生成URL。 – gparis 2011-03-04 11:28:56

3

您可以在您的控制器就像任何其他模塊的視圖輔助方法,這些方法將可用:

class MyController < ApplicationController 
    include ActionView::Helpers::UrlHelper 

    def ajax_method 
    link_to "foo", {:action => 'some_action', :foobar => {}} 
    end 
end