我有一个User
,Meeting
和Club
模型。
一个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页面。
答案 0 :(得分:1)
已解决。答案在我的form_for
中。我需要将其更改为:
<%= form_for [@club, @meeting] do |f| %>