Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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 重定向到,控制器和模型之间的关系_Ruby On Rails - Fatal编程技术网

Ruby on rails 重定向到,控制器和模型之间的关系

Ruby on rails 重定向到,控制器和模型之间的关系,ruby-on-rails,Ruby On Rails,我生成了一个scaffold,它生成了一个看起来像这样的控制器(我去掉了一些代码,但仍然有效) 这会导致它重定向到/posts/id,这一切都可以正常工作 但我不明白这是怎么回事@post是一个模型类的实例,那么它如何知道应该重定向到哪个控制器和操作?我看不到任何地方明确定义了这种关系(在Post模型和PostsController之间) 我曾经尝试过在没有搭建脚手架的情况下从头开始复制,但我遇到了一些错误,即无法找到与我定义的模型关联的url\u。即使我在routes.rb中使用资源定义路由,

我生成了一个scaffold,它生成了一个看起来像这样的控制器(我去掉了一些代码,但仍然有效)

这会导致它重定向到/posts/id,这一切都可以正常工作

但我不明白这是怎么回事
@post
是一个模型类的实例,那么它如何知道应该重定向到哪个控制器和操作?我看不到任何地方明确定义了这种关系(在
Post
模型和
PostsController
之间)


我曾经尝试过在没有搭建脚手架的情况下从头开始复制,但我遇到了一些错误,即无法找到与我定义的模型关联的
url\u。即使我在
routes.rb

中使用
资源定义路由,它仍然有效的原因是因为在控制器的后期创建方法中仍然存在,这在我看来很正常,而且在routes.rb文件中,您可能有一些类似于resources:posts的内容,这些内容涵盖了控制器的所有操作,例如posts/1/等。另一件事是确保在编辑/更改routes.eb文件时重新启动服务器。希望这是足够清楚的理解

当您调用
redirect_to
时,它通过调用方法计算路径

并到达中的
else
语句

并为
方法调用
url\u

并调用
polymorphic\u path
(和
polymorphic\u url

此处
将\u转换为\u模型(记录)

在哪里

计算
屈折变化
你会,它是
:单数

以后你会的

还有电话。 您将获得
['post']

在你的路线是
['post',:url]

放置并与
post\u路径(@post)


如果我在某个地方错了,我很抱歉。我希望这能让你理解
重定向到@post

你能发布你的
路由吗.rb
或者
rake路由的输出
?Wowww再精确不过了:)
  def create
    @post = Post.new(params[:post])

    if @post.save
      redirect_to @post
    end
  end