1

Railsアプリケーションの州/国ドロップダウンを設定するためにこれに従っていますが、次のエラーが発生していることに気付きました:

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

助けに感謝します。

4

3 に答える 3

1

のルートがありません。次のようなものを追加する必要がありsubregion_optionsますroutes.rb

resources :jobs do
  collection do
    get :subregion_options
  end
end

または、デモアプリの readme で提案されているように:

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

今、それはshowアクションにヒットし、 id = でジョブを探しようとしますがsubregion_options、これはあなたが望むものではないと確信しています:)

于 2013-12-13T23:25:52.047 に答える
0

私はこれと同じ問題を抱えていました.selectで米国の州が必要でした.

これが私が使用したコードで、それを解決しました(私にとって)

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

...そして、私の見解では:

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

PARAMS を使用して国コードを提供する例

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

次に、次のようにパラメーターをキャプチャして、ビューへのルートを生成しますwww.mysite.com/myform/US

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

最後に、ビューでこれをヘルパーへの入力として使用します。このように:

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

注: これは純粋に疑似コードであるため、適切に機能させるには微調整が必​​要になる場合があります。

于 2013-12-13T19:23:16.383 に答える
0

ルートの最初の一致であるため、Job の ID を渡しています。あなたのroutes.rbを見せてもらえますか?

于 2013-12-13T23:11:27.587 に答える