TL; DR;獲取路由資源的映射路徑,因爲它在routes.rb中
有沒有辦法像使用routes.rb聲明的那樣獲取一個帶有資源映射的字符串,包括params的名字?例如:
/resource/:id/nested/:nested_id/deep/:deep_id
/resource/:id/nested/:nested_id
/resource/:id
我需要這個字符串,並打算手動替換參數,可以或許與地圖狀{id: 1, nested_id:2, deep_id: 3}
原因
我有一個整合,我會收到這樣的:
resource:deep_resource, resource_id:1, extra_args: {id: 1, nested_id:2}
或
resource:nested_resource, resource_id:1, extra_args: {id: 1}
或
resource:first_level_resource, resource_id:1, extra_args: {}
我打算替換值的URL和重定向到給定的資源。也許用extra_args貼圖自動填充到url中的匹配參數。
我不想做了很多的if/else調用deep_resource_path(a,b,c)
或nested_resource_path(a,b)
或first_level_resource_path(a)
注意,對於較深的資源,我需要2個ARGS(祖父母ID和父ID)。對於嵌套的資源,我只需要父ID和first_level資源,我只需要它自己的Id。
那麼,有可能嗎?
謝謝。
ps .:我認爲帶args的地圖有更好的選項,然後接收或硬編碼de url來重定向每個資源。所以,如果將來URL更改,但保持相同的參數,重定向可以繼續工作。
這僅適用於「新」的網址。當試圖獲取resource_path(show)的url時,它要求我傳遞一個id。但是我想訪問像/ condominios /:id這樣的內容,用地圖插入參數並調用de url。如果它是resource_a_path或resource_b_path,我不需要新建。可能嗎? –
我想我不明白爲什麼你不會只使用顯示路徑版本,在我的例子中這將是'user_path'並傳入用戶對象。插值是不是重塑了Rails框架的輪子?我將編輯我的答案以顯示'show'情況。 – jaydel
它可以工作,但是一旦我有一張表導致多個資源,例如用戶,帖子和評論,我想到的是做這樣的事情:「這行代表什麼資源?評論?我顯示評論的URL並插入這些參數,然後重定向「。 要按照您的建議操作,我需要執行if/else以使用user_url,post_url或comments_url。而就我而言,我也嵌套了資源。 但我會做一些測試.... –