1

好的,我正在拍摄有这样的网址/applications/:application_id/jobseekers/new。我知道如果我生成 2 个脚手架(应用程序和求职者),我可以通过这样做使路线工作:

resources :applications do
  resources :jobseekers
end

但我不需要为求职者提供完整的脚手架。我只需要一个新的和创建方法。

我怎样才能编写我的路线,以便 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"

点击此网址时:

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

或者,您可以定义一个嵌套资源并仅包含带有选项的newcreate操作:only

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

请注意,在这种情况下,路径助手会略有不同,并且将使用application_id而不是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 回答