Rails 嵌套表格 - 从俱乐部创建新会议

Rails Nested Form - Creating a new Meeting from Club

我有一个 UserMeetingClub 模型。

A User has_many :user_clubs, has_many :clubs, :through => :user_clubs。

A Club has_many :user_clubs, has_many :users, :through => :user_clubs, and has_many :meetings

A Meeting belongs_to :club, and has_many :users

我面临的问题是通过嵌套路由创建新会议: http://localhost:3000/clubs/1/meetings/new.

当我尝试创建会议时收到验证错误 "Club must exist." 我知道这可以被覆盖,因为 belongs_to 协会需要俱乐部。但是,我不需要覆盖它——因为每次会议都应该属于一个俱乐部。我只是不知道如何正确解决错误。

我的路线是:

resources :users
resources :clubs do
  resources :meetings, only: [:show, :index, :new, :create, :edit, :update]
end

resources :meetings, only: [:index, :show, :new, :create, :edit, :update]

我的会议#new 操作看起来像:

def new
  @club = Club.find(params[:club_id])
  @meeting = Meeting.new
end

和会议#create:

def create
  binding.pry
  @meeting = Meeting.new(meeting_params)
  if @meeting.save
    binding.pry
    redirect_to club_path, notice: "Meeting was succesfully created."
  else
    render :new
  end
end

我的会议 new 模板正在使用 form_for(@meeting) do |f|。如何将验证所需的 club 传递给 Meetings#create?流程是: 用户显示页面 clicks club > Club show page clicks button to create new meeting > Meetings#new page types in name, description , 时间和点击次数 create > Meetings#index page 我无法通过 Meetings#new 页面。

已解决。答案在我的 form_for 中。我需要将其更改为:

<%= form_for [@club, @meeting] do |f| %>