5

我是第一次用 ruby​​ 编程,所以我正在从官方网站上做“入门”教程:

http://guides.rubyonrails.org/getting_started.html

我有5.7的问题。教程说:

如果你现在再次提交表单,Rails 会抱怨找不到 show 动作。虽然这不是很有用,所以让我们在继续之前添加 show 动作。

然后是以下代码:

发布 GET /posts/:id(.:format) 帖子#show

但是我必须把这段代码放在哪里?

谢谢!

4

6 回答 6

6

您所描述的是资源路由的show成员。posts它实际上不是代码,而是 URL 路由的一种模式。rake routes您可以通过从命令行键入以这种方式查看所有路线。

分解路线:

post GET /posts/:id(.:format) posts#show
# `post` => named route name (available by default only to singular routes)
# `GET` => HTTP method
# `/posts/:id(.:format)` => path made accessible by route
# :id => specifies that the argument passed in as `:id` is available to the controller as `params[:id]`
# `posts#show` => controller is `posts`, action is `show`

您需要创建show路由将映射到的相应控制器操作:

# app/controllers/posts_controller.rb
def show
  @post = Post.find(params[:id])
end
于 2013-07-01T08:40:23.630 回答
2

我在教程中遇到了同样的问题。对这个问题更直接的回答是“无处”。本教程中对该行的引用仅供参考。它的阅读方式使您相信您应该添加它,但没有什么可添加的。继续阅读本教程的其余部分,一切都会好起来的。也许有一天作者会阅读并修复它。

于 2013-10-30T22:15:16.977 回答
2

添加以下(粗体)句子将使 5.7 中的说明更加清晰:

如果你现在再次提交表单,Rails 会抱怨找不到 show 动作。虽然这不是很有用,所以让我们在继续之前添加 show 动作。现在运行“rake routes”会产生以下结果:

post GET /posts/:id(.:format) posts#show

于 2013-11-08T23:51:16.483 回答
1

如果您的应用程序中有 PostsController,那么您必须在 config/routes.rb 中有以下内容

resources :posts

这样它将为 post 控制器生成 7 个默认路由,其中​​ show 是默认操作。

当您rake routes在控制台中执行此操作时,它将向您显示应用程序的所有路由。从这些路线中,您可以获得

post GET    /posts/:id(.:format)                        posts#show

以上是路线,不是代码。所以它声明你有一个名为“posts”的控制器,“show”是它的一个动作。可以通过“/posts/:id”使用“get”方法访问。

于 2013-07-01T08:56:38.507 回答
1

确保私有部分在 def show 块之后

class PostsController < ApplicationController

def new
end

def create
  #render text: params[:post].inspect
  @post = Post.new(post_params)

  @post.save
  redirect_to @post
end

def show
  @post = Post.find(params[:id])
end

private
  def post_params
    params.require(:post).permit(:title, :text)
  end

end
于 2014-01-26T13:56:31.077 回答
0

正如一些人已经说过的那样,不需要将任何内容添加到配置文件中,即运行命令后出现的信息

耙路线

只需将show操作添加到 post_controller.rb 和 show.html.erb 视图就足以发布信息并继续示例。

于 2014-01-31T06:01:09.180 回答