Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未定义的方法…\u索引\u路径Ruby on Rails_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails 未定义的方法…\u索引\u路径Ruby on Rails

Ruby on rails 未定义的方法…\u索引\u路径Ruby on Rails,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,我正试图让一个基本的表格工作,我在努力,因为我不断得到的错误 undefined method `profiles_index_path' for #<#<Class:0x4fe1ba8>:0x4fccda0> 如果您运行“rake routes”命令,“profiles\u index”是否显示在您的路由中?通常,对于模型的索引页,工作“索引”被省略,因此路由是profiles\u path 您的错误可能来自一个视图,其中您使用了profiles\u index\u

我正试图让一个基本的表格工作,我在努力,因为我不断得到的错误

 undefined method `profiles_index_path' for #<#<Class:0x4fe1ba8>:0x4fccda0>
如果您运行“rake routes”命令,“profiles\u index”是否显示在您的路由中?通常,对于模型的索引页,工作“索引”被省略,因此路由是
profiles\u path


您的错误可能来自一个视图,其中您使用了
profiles\u index\u path
而不是
profiles\u path

您是否尝试将表单for标记替换为以下内容

<%= form_for @profile, :as => :post do |f| %>
:post do | f |%>

看起来它试图将其视为对“/profile”的GET请求。而且,由于它没有找到索引操作,它就失败了。我认为强迫它发帖子可以解决这个问题。

我认为它失败了,因为你的型号名称没有遵循惯例

所以我认为您的问题主要在于您没有遵循模型名称的约定,这通常是单数的,因为每个实例代表一个概要文件。我认为helper的表单_试图找出如何处理它,结果失败了。因此,您有两个选择来尝试和解决。将模型名称重构为singular(我不清楚这到底有多困难),或者将:url参数传递给form_for,以便它知道在哪里发布

<% form_for @profile, :url => path_to_create_action do |f| %>
path_to_create_action do|f|%>

更多信息请参见:

问题确实在于您将型号名称多元化的方式。不要那样做。它应该是
配置文件
,而不是
配置文件
。我的工作是允许您使用复数模型名,但答案是坚持Rails惯例,而不是与框架抗争。将您的模型重命名为
Profile
,用于
助手的
url\u将了解如何正确地将新的概要文件对象转换为
/profiles
url。

我正在使用Rails 5,我得到了相同的错误,具体使用了
媒体这个词,就像我的模型和RoR使用的
媒体一样复数形式,因此我在执行
rake routes
时得到了不同的路由

我所做的是:

  • 删除我刚刚创建的模型

    rails d scaffold Media
    
  • 编辑
    config/initializers/endocations.rb
    ,方法是:

    ActiveSupport::Inflector.inflections(:en) do |inflect|
        # Here you can put the singular and plural form you expect
        inflect.irregular 'media', 'medias'
    end
    
  • 现在再次执行scaffold:

    rails g scaffold Media
    
  • 现在你必须以你所期望的方式拥有一切。因为您已经覆盖了RubyonRails中的复数化奇点化(屈折变化)


    我希望它会有用。

    do
    rake routes
    检查
    index
    方法的正确路径您的
    routes.rb
    文件是什么样子的?嘿,我已经添加了相关的routes文件,以便您可以看到我的内容。该视图也称为new.html.erb,因为它用于创建新的配置文件。谢谢你的回复。视图文件名为new.html.erb,因为它用于创建新的配置文件-如果知道我需要更改什么来修复此问题,那就太好了。再次感谢:)您没有在new.html.erb中使用“profiles\u index\u path”。。或者你还没有发布所有的代码。我不认为问题就在于这个观点。奇怪吧!这是所有的代码,在任何时候我都不会引用profiles\u index\u path,但是错误是建议我在表单的开头行中引用?我试图加载的url是localhost:3000/newProfile我不知道问题出在哪里。您是否尝试过在所有项目中搜索“profiles\u index\u path”?遗憾的是,它目前肯定没有在任何地方使用,该应用程序不是很广泛,因此很容易找到:)嘿,对不起,忘了包括这个。视图文件名为new.html.erb-如果您能提供进一步帮助,我们将不胜感激。:)嘿,Yosep,谢谢你的帮助。可悲的是,我仍然会遇到同样的错误:(真的不知道为什么它会变得混乱!嗨,DVG,这是当我转到../newprofile(根据我的路线,它应该是profile#new)。谢谢!如果您将
    资源:profiles,:controller=>“profiles”
    移动到其他路由之上会发生什么?即使我将资源移动到路由文件的顶部,仍然会出现同样的错误。我的型号名称是复数,@profile是单数,尽管形式上的调用也是单数。干杯谢谢您的帮助,DVG,我必须将我的型号改为单数-谢谢你第一次强调这一点!令人惊讶的是,这似乎奏效了!谢谢你的帮助。模型=单数,控制器=复数这些都是rails规则吗?是的。你的模型应该总是单数,控制器应该总是复数。
    <% form_for @profile, :url => path_to_create_action do |f| %>
    
    rails d scaffold Media
    
    ActiveSupport::Inflector.inflections(:en) do |inflect|
        # Here you can put the singular and plural form you expect
        inflect.irregular 'media', 'medias'
    end
    
    rails g scaffold Media