我是第一次在Ruby中编程,所以我正在从官方网站上做“入门”教程:
http://guides.rubyonrails.org/getting_started.html
我有5.7的问题。教程说:
如果您现在再次提交表单,Rails会抱怨不会 找到节目动作。虽然这不是很有用,所以让我们补充一下 继续前的节目动作。
然后有以下代码:
发布GET /posts/:id(.:format)帖子#show
但是我必须把这段代码放在哪里?
谢谢!
答案 0 :(得分: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
答案 1 :(得分:2)
我在本教程中遇到了同样的问题。对这个问题的更直接的回应是“不在哪里”。本教程中对该行的引用仅供参考。它以一种让你相信你应该添加它的方式读取,但是没有什么可以添加的。继续学习本教程的其余部分,一切顺利。也许有一天,作者会阅读并修复它。
答案 2 :(得分:2)
添加以下(粗体)句子将使5.7中的说明更清晰:
如果您现在再次提交表单,Rails会抱怨没有找到show动作。虽然这不是很有用,所以让我们在继续之前添加show动作。 运行'rake routes`现在产生以下结果:
post GET /posts/:id(.:format) posts#show
答案 3 :(得分:1)
如果你的应用程序中有PostsController,那么你必须在config / routes.rb中有以下内容
resources :posts
这样它将为posts控制器生成7个默认路由,其中show是默认操作。
在控制台中执行rake routes
时,它会显示应用程序的所有路径。从这些路线,你可以得到
post GET /posts/:id(.:format) posts#show
以上是路线,而不是代码。所以它声明你有一个名为“posts”的控制器,而“show”就是它的一个动作。可以通过'/ posts /:id'和“get”方法访问。
答案 4 :(得分:1)
确保私人部分位于def show block
之后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
答案 5 :(得分:0)
没有什么需要添加到配置文件中,正如一些人已经说过的那样,是运行命令后出现的信息
rake routes
只需将 show 操作添加到post_controller.rb,show.html.erb视图就足以发布信息并继续示例。