2013-12-13 76 views
1

我一直在關注這個設置州/國家下拉菜單爲我的Rails應用程序,但請注意,我發現了以下錯誤:卡門 - 軌道 - 問題與軌道4

Started GET "/jobs/subregion_options?parent_region=BR" for 127.0.0.1 at 2013-12-13 21:01:09 +0000 
Processing by JobsController#show as HTML 
    Parameters: {"parent_region"=>"BR", "id"=>"subregion_options"} 
    User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 ORDER BY "users"."id" ASC LIMIT 1 
    Job Load (0.2ms) SELECT "jobs".* FROM "jobs" WHERE "jobs"."id" = ? LIMIT 1 [["id", "subregion_options"]] 
Completed 404 Not Found in 4ms 

ActiveRecord::RecordNotFound (Couldn't find Job with id=subregion_options): 
    app/controllers/jobs_controller.rb:75:in `set_job' 

我不明白爲什麼當只顯示我的set_job過濾器下面這個是這樣做的:

before_action :set_job, only: [:show, :edit, :update, :destroy] 

下面是我在與他使用的部分和路線的鏈接:

https://github.com/jim/carmen-demo-app

路線

    jobs GET  /jobs(.:format)      jobs#index 
         POST  /jobs(.:format)      jobs#create 
       new_job GET  /jobs/new(.:format)     jobs#new 
       edit_job GET  /jobs/:id/edit(.:format)    jobs#edit 
        job GET  /jobs/:id(.:format)     jobs#show 
         PATCH /jobs/:id(.:format)     jobs#update 
         PUT  /jobs/:id(.:format)     jobs#update 
         DELETE /jobs/:id(.:format)     jobs#destroy 
        root GET /         pages#index 
    jobs_subregion_options GET  /jobs/subregion_options(.:format)  jobs#subregion_options 

欣賞的幫助。

回答

1

你缺少了subregion_options的路線,在你routes.rb你將不得不添加類似

resources :jobs do 
    collection do 
    get :subregion_options 
    end 
end 

或者,如演示應用程序的自述建議:

get '/jobs/subregion_options' => 'jobs#subregion_options' 

現在它擊中show行動,並試圖尋找與ID = subregion_options,我敢肯定,工作是不是你想要的:)

+0

我的最後一個在我的路線中,最高位只是給了我錯誤的參數數量(1代表0) –

+0

是的,我把它寫在我頭頂上,現在修正它。在這些路線中,訂單是重要的,所以或者將'get'/ jobs/subregion_options'放在'resources:jobs'之前可能會很有用,但無論如何,我的第一個建議是最乾淨的恕我直言,並且肯定會有效。 – nathanvda

+0

耶穌盯着那3個小時,把路線移到了資源之上,我感謝了 –

0

我有同樣的問題,我只是需要在美國各州中選擇。

這是我使用的代碼從而解決了它(對我來說)

module ApplicationHelper 
    def us_states 
    Carmen::Country.coded('US').subregions.map { |c| c.code } 
    end 
end 

...然後在我的觀點:使用PARAMS

<%= f.input_field :state, collection: us_states, include_blank: false %>

例如提供國家代碼

module ApplicationHelper 
    def get_subregions(country_code = 'US') 
    Carmen::Country.coded(country_code).subregions.map { |c| c.code } 
    end 
end 

然後,生成到您的視圖的路線,捕獲PARAM,像www.mysite.com/myform/US

get 'myform/:cc', to: 'mycontroller#edit' 

最後,在你看來用這個作爲輸入到你的幫手。像這樣的:

<%= f.input_field :state, collection: get_subregions(params[:cc]), include_blank: false %> 

注:這純粹是僞代碼,所以你可能需要調整它得到它才能正常工作。

+0

什麼所有國家取決於國家?這就是我想要實現的。 –

+0

這個助手爲您提供了國家代碼「美」中的所有狀態,你可以修改這個解決方案爲您提供需要使用任何國家或地區代碼。不幸的是,我不是在使用卡門的專家,它只是把我探索得到這個對我的用例工作的位。 – Donovan

+0

我有點困惑,因爲在演示應用程序中,你可以選擇一個國家,然後選擇相關的州,所以我可能需要調整,以'全部'也許... –

0

它傳遞的ID工作,因爲它是路由的第一場比賽。你能告訴我你的routes.rb嗎?

+0

更新了路線 –