2016-08-10 9 views
1

私はreactjsで遊んでいた簡単なレールプロジェクトを持っています。いくつかの基本的なナビゲーションを追加するために、私はjs-routesライブラリを持ってきました。そして、 "localhost:3000/addresses/1"のようなパスパラメータを持つURLにはうまくいきます。js-routes(:: format)をURLに追加する

私が直面している問題は、「新しい」リソースメソッドを呼び出そうとしていて、URLhost:3000/addresses/new(。:format: )は無効なパスです。

「new_address_path」というパスは、routes-jsドキュメントで指定されているとおりに参照しています。このURLのすくい出力は以下の通りです:

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

ENV:問題の

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

ルート:

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

上記のパスを利用したHTMLスニペットは次のようになります

resources :addresses 

私は迷っていますここに?それは、レールのルートファイルを適切に解釈していないようです。

答えて

0

申し訳ありません:

Routes.new_address_path(format: 'js') 

はこのような何かを生成します。

問題はjs-routesではなく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オプションを使用できます。例えば:私はここに私の解決策を掲載思っ

/addresses/new.js 
+0

申し訳ありません。私のルートは、デフォルトのレールルートタイプの "resource"を使用しています。このタイプの "resource"は自動的にURLの末尾に(::フォーマット)を追加し、異なるフォーマットを受け入れることができます。 ERBファイルで作業しているときに、書式を指定する必要はありません。html/jsonかどうかを判断します。js-routesと同じ動作が期待されます。私はフォーマットを通過することができますが、それは無駄のようです。これは役に立ちますか? – gwnp