首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 5控制器无法获取模型

Rails 5控制器无法获取模型
EN

Stack Overflow用户
提问于 2017-11-25 08:56:48
回答 1查看 37关注 0票数 0

在“new”操作上嵌套控制器中的窗体出现问题。在这个嵌套的控制器中,我尝试使用一个名为“Company”的模型。确切的错误消息是:

代码语言:javascript
运行
复制
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| %>

当我尝试使用模型时,为什么它会询问路径?

这是我的控制器:

代码语言:javascript
运行
复制
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

我的路由文件:

代码语言:javascript
运行
复制
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

如果需要,可以发布更多信息。谢谢!!

EN

回答 1

Stack Overflow用户

发布于 2017-11-25 09:08:17

我找到了解决这个问题的办法。显然,当使用嵌套控制器时,必须在表单中包含名称空间。

有效的示例:

代码语言:javascript
运行
复制
<%= simple_form_for ([:admin, @company]) do |f| %>

与不起作用的原始格式相比:

代码语言:javascript
运行
复制
<%= simple_form_for @company do |f| %>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47481706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档