Ruby on rails 轨道形式(U)适用于命名器-can';我找不到断路的地方

Ruby on rails 轨道形式(U)适用于命名器-can';我找不到断路的地方,ruby-on-rails,Ruby On Rails,我试图使我的CRM应用程序工作,但无法找出损坏的部分在哪里。 尝试创建新联系人时,在链接“/companys/1/contacts/new”上 联系人中有“NoMethodError#new” 附加屏幕截图,请参见下面的代码。请帮忙找出错误 route.rb是: Rails.application.routes.draw do resources :companies do resources :contacts do member do post :

我试图使我的CRM应用程序工作,但无法找出损坏的部分在哪里。 尝试创建新联系人时,在链接“/companys/1/contacts/new”上 联系人中有“NoMethodError#new”

附加屏幕截图,请参见下面的代码。请帮忙找出错误

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
class contacts控制器
视图: 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 %>



您需要将公司指定为
表单u的第一个参数:

form_for(@company, @contact)
然后
form_将能够推断出正确的路径