0

updateweight、displaycalories などのメソッドを含む activity というコントローラーがあります。

<ul>
  <li><%= link_to "Home", "/" %></li>
  <li><%= link_to "Update Weight", "/activities/upweight" %></li>
  <li><%= link_to "Food Ressources", "/activities/food_res" %></li>
  <li><%= link_to "Exercises Technics", "/activities/exercises" %></li>
</ul>

アクティビティ コントローラーと、その後に続く名前のメソッドに到達できるルートはどれですか? リソース :アクティビティを試しましたが、奇妙な結果が得られました。

助けてくれてありがとう

4

3 に答える 3

2

利用可能なルートを見つけるにはrake routes、Rails アプリ ディレクトリのコマンド ラインからコマンドを使用します。これにより、リンクとして使用できる潜在的なルートのリストが表示されます。通常は次のようになります。

    users GET    /users(.:format)          users#index
          POST   /users(.:format)          users#create
 new_user GET    /users/new(.:format)      users#new

等...

ただし、あなたの場合、デフォルト以外の URL を作成しているため、それらをconfig/routes.rbファイルに追加する必要があります。たとえば、次のように追加します。

get '/activities/upweight' => 'activities#upweight'

これにより、GET http リクエストを使用して、選択した URL が希望する正しい controller#action に接続されます。

routes.rbまた、 line を使用してアクティビティ コントローラーのルートを作成した場合は、このresources :activitiesにカスタム ルーティング ラインを追加する必要があります。カスタム URL のキャッチオールとして機能し、それらをコントローラーの show メソッドにルーティングします。resources :activities

于 2012-11-23T01:33:32.037 に答える
2

コントローラーで任意のアクションを処理することは、RESTful ではありません。Rails のかなり古いバージョンでは、次のように処理されていました。

match ':controller(/:action(/:id))(.:format)'

..そして実際、今日のRailsでもそれは可能です。「作成」や「削除」などのアクションは GET 要求に応答しないため、RESTful なアクションと任意のアクションを 1 つのコントローラーに混在させないように注意する必要があります。

あるいは、「体重」、「食品」、および「運動」を独自のリソースに宣伝することもできます。

また、「リソース」や「テクニック」の綴りはできないようですが、私はむしろ自分の技術を行使するイメージが好きです。

于 2012-11-23T01:43:09.940 に答える
1

あなたの場合、ルートは次のようになります。

match "/activities/upweight", :as => "activities#upweight" 
match "/activities/food_res", :as => "activities#food_res" 
match "/activities/exercises", :as => "activities#exercises"

upweightfood_res、という名前のメソッドがある場合exercises

于 2012-11-23T01:59:01.200 に答える