Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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路径';在表单中,路线定义在:resources_Ruby On Rails - Fatal编程技术网

Ruby on rails 未定义的方法`#u路径';在表单中,路线定义在:resources

Ruby on rails 未定义的方法`#u路径';在表单中,路线定义在:resources,ruby-on-rails,Ruby On Rails,我已经在这上面停留了一段时间,无法找出出现以下错误的确切原因: 未定义的方法“entries\u path” 入口控制器: class EntryController < ApplicationController def index end def new @entry = Entry.new end def create @entry = Entry.new(user_params) if @entry.save redir

我已经在这上面停留了一段时间,无法找出出现以下错误的确切原因:

未定义的方法“entries\u path”

入口控制器:

class EntryController < ApplicationController
  def index
  end

  def new
    @entry = Entry.new
  end

   def create
    @entry = Entry.new(user_params)
    if @entry.save
      redirect_to @entry
    else
      render 'new'
    end
  end

  private

    def user_params
      params.require(:entry).permit(:comment, :flag)
    end

end
以及出现错误的新页面:

<%= form_for(@entry) do |f| %>

  <%= f.label :comment %>
  <%= f.text_field :comment %>

  <%= f.label :flag %>
  <%= f.text_field :flag %>

<% end %>


我无法理解为什么会出现此错误。

表单(u
需要引用与
@entry
关联的路径(即
entries(u path
)),但您的
routes.rb
文件使用资源的单数形式(
:entry
)而不是所需的复数形式(
:entries
),所以正确的路径名不存在

Rails模型使用单数形式,但是Rails数据库、控制器、视图使用复数形式,这反映在routes文件中。记住这一点的一种方法是,模型描述每个对象所属的单个类。几乎所有其他内容都负责管理多个实例,因此虽然它们本身是单数的(例如
Controller
),但它们以复数形式引用它们管理的对象(例如
entriesconner
Controller/entries
目录)


有关这方面的更多讨论,请参见。

表单\u需要引用与
@entry
关联的路径(即
条目\u路径
),但您的
路由.rb
文件使用资源的单数形式(
:entry
)而不是所需的复数形式(
:entries
),所以正确的路径名不存在

Rails模型使用单数形式,但是Rails数据库、控制器、视图使用复数形式,这反映在routes文件中。记住这一点的一种方法是,模型描述每个对象所属的单个类。几乎所有其他内容都负责管理多个实例,因此虽然它们本身是单数的(例如
Controller
),但它们以复数形式引用它们管理的对象(例如
entriesconner
Controller/entries
目录)


有关这方面的更多讨论,请参阅。

控制器和视图应始终以复数形式处理。例如,如果您有一个对象手册,那么控制器声明应该是

类BooksController 视图(新建、编辑、显示、索引)应位于名为

/书

此外,路线声明应采用复数形式。在这种情况下,应将路线声明为

资源:书籍

您可以尝试通过在终端中运行来生成控制器和视图文件夹:

rails以复数形式生成\u对象\u的控制器名称\u(对于示例、书籍)


脚本将生成名为books_controller.rb的控制器和/views

控制器下的/books文件夹,并且视图应始终以复数形式处理。例如,如果您有一个对象手册,那么控制器声明应该是

类BooksController 视图(新建、编辑、显示、索引)应位于名为

/书

此外,路线声明应采用复数形式。在这种情况下,应将路线声明为

资源:书籍

您可以尝试通过在终端中运行来生成控制器和视图文件夹:

rails以复数形式生成\u对象\u的控制器名称\u(对于示例、书籍)


脚本将在/views

下生成名为books\u controller.rb和/books folder的控制器。您确定是
新建
页面出错了吗?是否有可以共享的堆栈跟踪?
入口
型号如何?
entries\u path
在您的代码中出现在哪里?是的,在新页面中,entries\u path不会出现在我的代码中的任何地方。如何获取堆栈跟踪?因此我使用“rails生成模型条目注释:text flag:binary”创建了一个模型,但它最终创建了一个包含名称条目的表,这真是令人困惑。这很正常。Rails使用ActiveRecord类的复数形式来命名表。实际上,这就是路由文件的问题所在。应该是
resources:entries
。这不是
而不是
?您确定是
新的
页面给了您错误吗?是否有可以共享的堆栈跟踪?
入口
型号如何?
entries\u path
在您的代码中出现在哪里?是的,在新页面中,entries\u path不会出现在我的代码中的任何地方。如何获取堆栈跟踪?因此我使用“rails生成模型条目注释:text flag:binary”创建了一个模型,但它最终创建了一个包含名称条目的表,这真是令人困惑。这很正常。Rails使用ActiveRecord类的复数形式来命名表。实际上,这就是路由文件的问题所在。它应该是
resources:entries
。这不是
而不是
?我的视图是否仍在entry>new.html.erb下?还是我应该在视图中创建一个entries文件夹?我猜您使用的是rails 4,即使您已经尝试过,它也会显示所有可用于条目的路由。这可能会让您对错误有所了解。@Saad您需要将目录重命名为复数形式。请参阅更新的答案。在相关的点上,如果这是你的第一个Rails项目,而你没有遵循教程,你可能会考虑它。有很多这样的细节,教程是很有帮助的。Hartl one做得特别好而且很受欢迎。我的视图是否仍在entry>new.html.erb下?还是应该在视图中创建一个entries文件夹?我猜您使用的是rails 4,即使您已经尝试过,它也会显示所有可用于条目的路由。这可能会让您对错误有所了解。@Saad您需要将目录重命名为复数形式。请参阅更新的答案。在相关点上,如果这是你的fir
<%= form_for(@entry) do |f| %>

  <%= f.label :comment %>
  <%= f.text_field :comment %>

  <%= f.label :flag %>
  <%= f.text_field :flag %>

<% end %>