1

わかりました、このような URL を撮影してい/applications/:application_id/jobseekers/newます。2 つの足場 (アプリケーションと求職者) を生成する場合、次のようにしてルートを機能させることができます。

resources :applications do
  resources :jobseekers
end

しかし、求職者のための完全な足場は必要ありません。new メソッドと create メソッドだけが必要です。

jobseekers#new および jobseekers#create メソッドが機能するようにルートを作成するにはどうすればよいですか?

私は試した

resources :applications do 
    get '/applications/:application_id/jobseekers/new', :to => 'jobseekers#new', :as => :new_application_jobseeker
    post '/applications/:application_id/jobseekers', :to => 'jobseekers#create'
  end

しかし、それは私にこのエラーを与えます:

No route matches [GET] "/applications/3/jobseekers/new"

このURLにアクセスすると:

localhost:3000/applications/3/jobseekers/new
4

3 に答える 3

5

次のように、必要なアクションを指定できます。

resources :applications do
  resources :jobseekers, :only=> [:new, :create]
end
于 2013-01-29T03:48:44.170 に答える
4

ルートの問題は、ネストされたルートにフルパス('/applications/:application_id/jobseekers/new')が含まれていることです。代わりに、と呼び出しをメンバーブロックに入れる必要があります。getpost

resources :applications do
  member do
    get "jobseekers/new", :to => 'jobseekers#new'
    post "jobseekers", :to => 'jobseekers#create'
  end
end

これを行うことにより、Railsは、完全なルートを取得するために/applications/:id/一部が追加されます。これを呼び出すと、次のように表示されます。"jobseekers/new"rake routes

new_application_jobseeker_application GET    /applications/:id/jobseekers/new(.:format) jobseekers#new
               jobseekers_application POST   /applications/:id/jobseekers(.:format)     jobseekers#create

または、ネストされたリソースを定義し、オプションを使用してnewandcreateアクションのみを含めることができます。only

resources :applications do
  resources :jobseekers, :only=> [:new, :create]
end

この場合、パスヘルパーはわずかに異なり、アプリケーションのIDapplication_idではなく使用することに注意してください。id

   application_jobseekers POST   /applications/:application_id/jobseekers(.:format)     jobseekers#create
new_application_jobseeker GET    /applications/:application_id/jobseekers/new(.:format) jobseekers#new
于 2013-01-29T04:00:40.400 に答える
0

移行を使用してテーブルを作成し、モデルとコントローラーを手動で作成してから、必要なメソッドのみを追加します。

rails g model jobseekers

于 2013-01-29T03:39:26.043 に答える