0

ばかげた質問...1つのページに2つの異なる機能を持つ2つのフォーム、views / projects/new.html.erbファイルがあります。これまでのところ、新しいプロジェクトを「作成」するオプションを使用して、1つだけ実装しました。同じページに表示されているレコードを並べ替える別の関数を追加したいのですが、次のようになります。

<%= link_to "Category", { :controller => "projects", :action => "sortTable", :filter => "Category" }, :remote => true %>

--私のroutes.rbファイル:

Docside::Application.routes.draw do
  resources :projects
  resources :categories
  #get "home/index"
  root :to => "projects#new"
  match 'project/new',:controller=>"projects",:action=>"create"
end

しかし、「ルートが一致しません{:action => "sortTable"、:controller=>"projects"}」というエラーが発生します。"match'project / new'、:controller =>" projects "、:action =>" sortTable ""を追加しようとすると、他の関数が機能せず、create関数が失敗しました。代わりに何が必要ですか?

4

2 に答える 2

2

それを試してください:

resources :projects do
  collection do
    post :sortTable
  end
end

そして、このガイドを見てください

于 2012-10-08T07:26:50.037 に答える
2

特定のパスとメソッドの組み合わせに対して設定できるルートは1つだけです。同じパス上に複数のルートを定義しようとしているため、そのうちの1つ(最初のルート)のみが機能します。これらのアクションごとに個別のパスを使用する場合は問題ありません(すべてのアクションに対してプロジェクト/新規ではありません。既存のルートとの衝突に注意してください)

また、Railsの規則に固執すれば、生活が楽になります(そして、誰かが作業を開始すると、コードが読みやすくなります)。たとえばresources :projects、createアクションのルートはすでに作成されています。そのように追加のアクションを追加することができます

resources :projects do
  collection do
    get :sort_table
  end
end

sort_tableアクションの収集ルート(つまり、特定のプロジェクトに関するものではないルート)を設定し、URLヘルパー(sort_table_projects_path)を設定します。使用できる代替構文があります-ルーティングガイドを参照することをお勧めします

于 2012-10-08T07:28:02.557 に答える