2017-11-25 1 views
0

'새'작업에서 중첩 컨트롤러의 양식에 문제가 있습니다. 이 중첩 컨트롤러에서 'Company'라는 모델을 사용하려고합니다. 정확한 오류 메시지는 다음과 같습니다.레일 5 컨트롤러가 모델을 가져올 수 없습니다.

NoMethodError in Admin::Companies#new 

Showing /app/views/admin/companies/new.html.erb where line #4 raised: 

undefined method `companies_path' for #<#<Class:0x007f2d89571cb0>:0x007f2d899f5e08> 

Did you mean? compute_asset_path 

Line 4: <%= simple_form_for(@company) do |f| %> 

모델을 사용할 때 경로를 묻는 이유는 무엇입니까?

여기 내 컨트롤러 :

class Admin::CompaniesController < AdminsController 
    def new 
    @company = Company.new 
    end 

    def create 
    @company = Company.new(company_params) 

    if @company.save 
     redirect_to admin_index_path 
    else 
     flash.now[:alert] = "Error - Please try again" 
     render :new 
    end 
    end 
end 

private 

def company_params 
    params.require(:company).permit(:name, :location) 
end 

내 경로 파일 :

Rails.application.routes.draw do 
    namespace :admin do 
    resources :companies 
    end 

    resources :admins 

    devise_for :users, controllers: { registrations: 'users/registrations' } 

    root 'welcome#index' 
end 

** 참고 : 필요한 경우 더 많은 정보를 게시 할 수 레일 5.1

사용. 감사!!

답변

2

해결책을 찾았습니다. 분명히 중첩 된 컨트롤러를 사용할 때는 네임 스페이스를 폼에 포함해야합니다. 일

예 : 원래 형식에 비해

<%= simple_form_for ([:admin, @company]) do |f| %> 

작동하지 않았다 :

<%= simple_form_for @company do |f| %> 
관련 문제