Form_for嵌套对象

时间:2015-09-06 01:29:31

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我正在开发一个有两种模式的网站:公司和联系人。我有一个显示公司信息的页面,还有一个添加联系人的链接。我的路线是:

    resources :companies do
       resources :contacts 
    end 

我怀疑的是,我如何使用路径在本页面内创建新联系人,以及如何在联系人控制器中使用我的新方法和创建方法

提前致谢

1 个答案:

答案 0 :(得分:3)

如果您执行: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