我尝试使我的CRM应用程序正常工作,并且无法找出损坏部分的位置。 在尝试创建新联系人时,请在链接&company / 1 / contacts / new' 在联系人#new'中得到NoMethodError。
附上截图,请参阅下面的代码。请帮忙找错..
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 %>
答案 0 :(得分:2)
您需要将公司指定为form_for
的第一个参数:
form_for(@company, @contact)
然后form_for
将能够推断出正确的路径。