2016-08-10 93 views
1

我有一個簡單的rails項目,我一直在與reactjs一起玩。爲了添加一些基本的導航,我帶入了js-routes庫,它適用於具有諸如「localhost:3000/addresses/1」之類的路徑參數的URL。js-routes向URL添加(::格式)

我面臨的問題是我試圖調用一個「新」資源方法,它將字面上的(::格式)添加到當然炸彈爲localhost:3000/addresses/new(。:格式)是無效的路徑。

我引用了routes-js文檔中指定的「new_address_path」路徑。耙輸出這個網址是下面:

new_address_path GET /addresses/new(.:format) addresses#new 

利用上述路徑中的HTML代碼片段看起來是這樣的:

<a href={Routes.new_address_path}>Create am address</a> 

ENV:

-Ruby: 2.2.4 
-Rails: 4.2.6 
-js-routes: 1.2.8 

路線問題:

resources :addresses 

我在想什麼g在這裏?它似乎沒有正確解釋rails路徑文件。

回答

0

對不起,我以爲我貼我的解決方案在這裏。

問題不是js路由,而是我的AJAX調用,我將內容類型設置爲JSON,我假定它使用內置方法將我的對象轉換爲JSON。這不是真的,你需要通過JSON.stringify(obj)手動將對象轉換爲JSON。

老Ajax調用:

.... 
url: Routes.feedback_path(), 
dataType: 'json', 
contentType: 'application/json', 
type: 'POST', 
data: obj, 
.... 

新的AJAX調用:

.... 
url: Routes.feedback_path(), 
dataType: 'json', 
contentType: 'application/json', 
type: 'POST', 
data: JSON.stringify(obj), 
.... 
0

我不確定是否有你的問題。如果你想用格式後綴生成url,你可以在助手方法中使用format選項。例如:

Routes.new_address_path(format: 'js') 

會產生這樣的事情:

/addresses/new.js 
+0

對不起。我的意思是,我的路由使用了默認的rails資源類型,它會自動將一個(::格式)附加到URL的末尾,以便它可以接受不同的格式。在ERB文件中工作時,我不需要指定格式,rails會計算出它是否爲html/json等。我期望從js-routes看到同樣的行爲,我誤解了嗎?我可以通過格式,但它似乎是一種浪費。這有幫助嗎? – gwnp