Form_for 嵌套对象
Form_for nested objects
我正在开发一个具有两种模型的网站:公司和联系人。我有一个显示公司信息的页面,还有一个 link 用于添加联系人。我的路线是这样的:
resources :companies do
resources :contacts
end
我的疑问是我如何使用路径在此页面内创建新联系人以及我应该如何在联系人控制器内创建新方法
提前致谢
如果您执行以下操作:rake routes
您将看到您的应用程序的所有可用路由。
要创建新联系人,您有以下路线:
new_company_contact GET /companies/:company_id/contacts/new(.:format) contacts#new
这意味着您可以使用 new_company_contact_path
辅助方法,它将带您到相应的视图 app/views/new.html.erb
。而且,在 contacts_controller
的 new
方法中,您将得到如下内容:
def new
@contact = Contact.new
end
而且,您的 create
方法将如下所示:
def create
@contact = Contact.new(contact_params)
if @contact.save
flash[:info] = "Contact saved successfully"
redirect_to root_url
else
render 'new'
end
end
确保您的 contact_params
私有方法 contacts_controller
:
private
def contact_params
params.require(:contact).permit(:name, :email)
end
我正在开发一个具有两种模型的网站:公司和联系人。我有一个显示公司信息的页面,还有一个 link 用于添加联系人。我的路线是这样的:
resources :companies do
resources :contacts
end
我的疑问是我如何使用路径在此页面内创建新联系人以及我应该如何在联系人控制器内创建新方法
提前致谢
如果您执行以下操作:rake routes
您将看到您的应用程序的所有可用路由。
要创建新联系人,您有以下路线:
new_company_contact GET /companies/:company_id/contacts/new(.:format) contacts#new
这意味着您可以使用 new_company_contact_path
辅助方法,它将带您到相应的视图 app/views/new.html.erb
。而且,在 contacts_controller
的 new
方法中,您将得到如下内容:
def new
@contact = Contact.new
end
而且,您的 create
方法将如下所示:
def create
@contact = Contact.new(contact_params)
if @contact.save
flash[:info] = "Contact saved successfully"
redirect_to root_url
else
render 'new'
end
end
确保您的 contact_params
私有方法 contacts_controller
:
private
def contact_params
params.require(:contact).permit(:name, :email)
end