2015-03-24 2 views
1

Я пытаюсь сделать свое приложение CRM и не могу понять, где сломанная часть. При попытке создать новый контакт по ссылке '/ companies/1/contacts/new' получил 'NoMethodError in Contacts # new'.Rails form_for NoMethodError - не может найти, где сломанный путь

Снимок экрана прилагается, см. Код ниже. Пожалуйста, помогите найти ошибку ..

enter image description here

route.rb является:

Rails.application.routes.draw do 

    resources :companies do 
    resources :contacts do 
     member do 
     post :new 
     end 
    end 
    end 

    root 'companies#index' 
end 

Контакты Контроллер:

class ContactsController < ApplicationController 

    before_action :set_company 

    def index 
    @contacts = Contact.where(company_id: params[:company_id]) 
    end 

    def new; @contact = @company.contacts.new; end 

    def create 
    @contact = @company.contacts.create(contact_params) 
    @contact.save ? redirect_to @company : render :new 
    end 

    private 

    def set_company; @company = Company.find(params[:company_id]); end 

    def contact_params 
    params.require(:contact).permit(:name, :position, :phone, :email) 
    end 
end 

Вид: new.html.erb:

<%= render 'form' %> 
<%= link_to 'Back', company_contacts_path %> 

Форма помощник:

<%= form_for(@contact) do |f| %> 
    <div class="field"> 
    <%= f.label :name %><br> 
    <%= f.text_field :name %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

ответ

2

Вы должны указать компанию в качестве первого аргумента form_for:

form_for(@company, @contact) 

Тогда form_for будет в состоянии вывести правильный путь.

Смежные вопросы