在“new”操作上嵌套控制器中的窗体出现问题。在这个嵌套的控制器中,我尝试使用一个名为“Company”的模型。确切的错误消息是:
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
**注意:使用Rails 5.1
如果需要,可以发布更多信息。谢谢!!
发布于 2017-11-25 09:08:17
我找到了解决这个问题的办法。显然,当使用嵌套控制器时,必须在表单中包含名称空间。
有效的示例:
<%= simple_form_for ([:admin, @company]) do |f| %>
与不起作用的原始格式相比:
<%= simple_form_for @company do |f| %>
https://stackoverflow.com/questions/47481706
复制相似问题