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

时间:2019-03-03 20:48:36

标签: ruby-on-rails form-for nested-form-for

我有一个UserMeetingClub模型。

一个User has_many:user_clubs,has_many:clubs,:through =>:user_clubs。

Club的has_many:user_clubs,has_many:users,:through =>:user_clubs和has_many:meetings

Meeting所属的:club和has_many的用户

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

当我尝试创建会议时,出现验证错误“俱乐部必须存在”。我知道这可以被覆盖,因为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]

我的会议#新动作如下:

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

和会议#创建:

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?流程为: 用户显示页面点击俱乐部>俱乐部显示页面点击按钮创建新会议> Meetings#new页面类型,名称,描述,时间和点击创建> Meetings#index页面 我无法通过Meetings#new页面。

1 个答案:

答案 0 :(得分:1)

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

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