0

Rails 2 アプリケーションを Rails 3 に移行しましたが、次の問題が発生しています。ビュー ファイルの 1 つで、次の JavaScript を呼び出しています (JQuery を使用)。

$.getJSON("<%= url_for(:controller => :visit_types, :action => :get_color)%>" + '/' + calEvent.visit_type_id, function(data) { calEvent.color = data;});

ページをロードすると、次のエラーが表示されます。

{:controller="visit_types", :action="get_color"} に一致するルートはありません

rake routes出力:

/visit_types/get_color/:id(.:format)    {:controller=>"visit_types",:action=>"get_color"} 

それは本当です。通話:id中にを渡しません。url_for()しかし、Rails 2 ではこれが可能でした。どうすればこれを解決できますか?

4

1 に答える 1

0

JavaScriptでIDを手動で追加しているようです。あなたは書くべきです:

<%= url_for(:controller => :visit_types, :action => :get_color, :id => calEvent.visit_type_id)%>

実行rake routesすると、通常は前に文字列も表示されます。この文字列は、ジェネリックの代わりに使用できる名前です(またはurl_for追加するだけです)。あなたの場合、これは次のようになります_url_path

get_color_visit_types_url(calEvent.visit_type_id)

この形の方が表現力があると思います。また、ルートファイルでより適切な、またはより具体的な名前を付けることができることに注意してください。

お役に立てれば。

于 2012-08-12T17:30:56.393 に答える