proguradk
@proguradk

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

rails ネストしたモデル create できない

解決したいこと

railsでアプリケーションを作っています。
ネストしたもモデルのクリエイトの仕方がわかりません。三日ほど戦っていますが全く進まないのでどなたか教えてほしいです。ネットで調べてそれっぽいのをすべてためいましたがうまく動きません。

発生している問題・エラー

undefined method `details' for #<Allplan:0x00000246a6407010> Did you mean? detail detail=

details_controller

class DetailsController < ApplicationController
  def index
    @allplan = Allplan.find_by(id: params[:allplan_id])
    @details = Detail.all
    @detail = Detail.new
  end

  def create
    @allplan = Allplan.find_by(id: params[:allplan_id])

    @detail = @allplan.detail.new(detail_params)

    @detail.save

    redirect_to allplan_details_path


  end

  def show
    @allplan = Allplan.find_by(id: params[:allplan_id])
    @detail = Detail.find(params[:id])
  end

  private
  def detail_params
     params.require(:detail).permit(:example, :allplan_id)
  end


end

index.html

<h1>スタート</h1>

<% @details.each do |example| %>
  <%= example.example %>
<% end %>

  <%= form_with(model: [@allplan,@detail], local: true) do |f| %>

    <h4>Title</h4>
    <%= f.text_field :example %>

    <p>
      <%= f.submit 'create book' %>
    </p>



  <% end %>


routes.rb

Rails.application.routes.draw do
  root 'allplans#index'
  resources :allplans do
    resources :details
  end
end

detail.rb

class Detail < ApplicationRecord
  belongs_to :allplan
end

allplan.rb

class Allplan < ApplicationRecord
  has_many :details, foreign_key: 'Detail_id'
end

0

1Answer

Comments

  1. @proguradk

    Questioner

    読み、createの中身を
    @detail = @allplan.detail.new(detail_params)
    としたのですが、
    unknown attribute 'Detail_id' for Detail.
    というエラーがでてやはりうまく動きません。
    ヒントをいただけないでしょうか??
  2. @proguradk

    Questioner

    ありがとうございます。頑張ります!

Your answer might help someone💌