2015-09-06 132 views
1

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

resources :companies do 
     resources :contacts 
    end 

我的疑问是,我怎么能使用路径来创建此页面内一个新的联系人,并应如何是我的新创建接触控制器内部的方法提前

谢谢

回答

3

如果你做一个:rake routes你会看到你的应用程序的所有可用路线。

用于创建新的联系人,你有这样的路线:

new_company_contact GET /companies/:company_id/contacts/new(.:format)  contacts#new 

这意味着你可以使用,将带你到相应的视图app/views/new.html.erbnew_company_contact_path的辅助方法。而且,在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 
+0

感谢您的回答!我只有一个问题...在我的edit.html.erb文件中,当我使用<%form_for(@company)do | f | %>它说我没有路径。我该如何解决它? – Morris

+0

你能发布错误的堆栈跟踪吗?错过了哪条路呢?如果可能的话,发布另一个问题的细节,我会看看。 –

+0

错误是这样的:未定义的方法'contacts_path' 当我使用<%= form_for(@contact)do | f | %> – Morris