Rails 嵌套表格 - 从俱乐部创建新会议
Rails Nested Form - Creating a new Meeting from Club
我有一个 User
、Meeting
和 Club
模型。
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| %>
我有一个 User
、Meeting
和 Club
模型。
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| %>