我第一次在Ruby中编程,所以我正在从官方网站上进行“入门”教程:
http://guides.rubyonrails.org/getting_started.html
我有一个关于5.7的问题。教程上说:如果你现在再次提交表单,Rails会抱怨找不到show操作。然而这并没有什么用,所以让我们在继续之前添加show操作。
然后是以下代码:
post GET /posts/:id(.:format) posts#show
但是我应该把这个代码放在哪里?
谢谢!
我第一次在Ruby中编程,所以我正在从官方网站上进行“入门”教程:
http://guides.rubyonrails.org/getting_started.html
我有一个关于5.7的问题。教程上说:如果你现在再次提交表单,Rails会抱怨找不到show操作。然而这并没有什么用,所以让我们在继续之前添加show操作。
然后是以下代码:
post GET /posts/:id(.:format) posts#show
但是我应该把这个代码放在哪里?
谢谢!
show
成员,这并不是实际代码,而是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
在5.7中添加以下(加粗)句子可以使说明更加清晰:
如果您现在再次提交表单,Rails将抱怨找不到show操作。虽然这并不是很有用,所以让我们在继续之前添加show操作。 现在运行'rake routes'的结果如下:
post GET /posts/:id(.:format) posts#show
我也在教程中遇到了同样的问题。更直接的回答是“没有地方”。教程中对该行的引用仅供参考。它的阅读方式会让你误以为需要添加内容,但实际上不需要。继续进行教程的其他部分,一切都会顺利进行。或许有一天作者会看到这个问题并加以修正。
resources :posts
这样它将为帖子控制器生成7个默认路由,其中show是默认操作。
当您在控制台中执行rake routes
时,它会显示应用程序的所有路由。从这些路由中,您可以获得
post GET /posts/:id(.:format) posts#show
resources: posts
,因为这在第5节中有明确说明。 - zeantsoiclass 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
无需向配置文件中添加任何内容,正如一些人已经说过的那样,这是在运行以下命令后出现的信息:
rake routes
只需将show操作添加到post_controller.rb和show.html.erb视图中即可发布信息并继续进行示例。
posts
控制器的show
操作,而不是下面甚至不是代码的一行。 - zeantsoi