railsでcouldn't find ~ without an IDのエラーを解消したいです。
form_withでネストしたモデル(planのcourses)を投稿できるようにしているのですが、エラーばかりでなかなかうまくいきません。
ここにくるまでにルーティングでも苦戦したので、今回もルーティングに問題があるのではと考えています。色々調べたのですが、自分では解決できず質問させてもらいます。
planとcourseが一対多の構造で、plan.rbとcourse.rbにbelongs_to,has_manyの記述はしているので、アソシエーションは出来ています。
↓こちらが出ているエラーです。フォーム画面から入力して、投稿ボタンを押すと、planにidが無いと出てきます。
https://gyazo.com/81f82ca8d924b53705dc7effef5f7847
↓CoursesControllerの抜粋
def create @plan = Plan.find(params[:id]) @course = @plan.courses.build(course_params) if @course.save flash[:success] = 'コースを設定しました。' redirect_to root_url else @course = courses.order(id: :desc) flash.now[:danger] = 'コースの設定に失敗しました。' render 'toppages/index' end end def destroy end private def plan_params params.require(:plan).permit(:name, :outline, :topphoto) end def course_params params.require(:course).permit(:number, :outline) end
↓routes.rb
resources :plans, only: [:index, :show, :create, :destroy] do get 'courses_post', to: 'courses#new' post 'courses_post', to: 'courses#create' resources :courses, only: [:index, :destroy] end
↓routes.rb
<div class="col-sm-6 offset-sm-3"> <%= form_with(model: [@plan, @course], url: plan_courses_post_path, local: true) do |f| %> <div class="form-group"> <%= f.label :number, 'Number' %> <%= f.text_field :name, class: 'form-control' %> </div> <div class="form-group"> <%= f.label :text, 'Text' %> <%= f.text_area :text, class: 'form-control' %> </div> <%= f.submit 'courses', class: 'btn btn-primary btn-block' %> <% end %> </div>
↓routes
$ rails routes Prefix Verb URI Pattern Controller#Action root GET / toppages#index login GET /login(.:format) sessions#new POST /login(.:format) sessions#create logout DELETE /logout(.:format) sessions#destroy signup GET /signup(.:format) users#new post GET /post(.:format) plans#new users GET /users(.:format) users#index POST /users(.:format) users#create user GET /users/:id(.:format) users#show plan_courses_post GET /plans/:plan_id/courses_post(.:format) courses#new POST /plans/:plan_id/courses_post(.:format) courses#create plan_courses GET /plans/:plan_id/courses(.:format) courses#index plan_course DELETE /plans/:plan_id/courses/:id(.:format) courses#destroy plans GET /plans(.:format) plans#index POST /plans(.:format) plans#create plan GET /plans/:id(.:format) plans#show DELETE /plans/:id(.:format) plans#destroy refile_app /attachments #<Refile::App app_file="/home/ec2-user/.rvm/gems/ruby-2.5.3/bundler/gems/refile-46b4178654e6/lib/refile/app.rb">
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/08 08:43