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_controllernew 方法中,您将得到如下内容:

  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