我对ruby完全陌生,我正在逐步关注this ruby rails tutorial,除了我称之为我的app" cinema"的详细信息。
我创建了一个名为" posts"的资源,有一个名为posts controller的控制器类。从页面帖子/ new我应该发布带有标题的文本,并执行一个动作(显示)。我试图在路由文件和控制器类中添加show动作。
表单提交时应调用show动作,表单包含标题和文本字段,映射到数据库中。
在paragraph 5.7中,有一条非明确的指令:它说要添加这一行:
post GET /posts/:id(.:format) posts#show
到我的routes.rb
文件,但它没有说明确切地写在哪里,我把它放在resources:posts
下(也许它错了地方,它没有&#39}什么都不说了。
我还将show方法添加到控制器类:
def show
@post = Post.find(params[:id])
end
private
def post_params
params.require(:post).permit(:title,:test);
end
但是当我提交表单时,我仍然会收到此错误:
rake routes
命令结果:
前缀动词URI模式控制器#动作
welcome_index GET /welcome/index(.:format)welcome #index
root GET / welcome #index
帖子GET /posts(.:format)帖子#index
POST /posts(.:format)帖子#create
new_post GET /posts/new(.:format)帖子#new
edit_post GET /posts/:id/edit(.:format)发布#edit
发布GET /posts/:id(.:format)帖子#show
PATCH /posts/:id(.:format)发布#upup
PUT /posts/:id(.:format)发布#upcate
DELETE /posts/:id(.:format)发布#troy
答案 0 :(得分:5)
它不会告诉您将其添加到routes.rb
。这是使用以下命令自动创建的路线之一:
resources :posts
从routes.rb
重新启动服务器中删除该行,然后继续学习本教程。
提示:您可以运行rake routes
查看应用中的所有可用路由。
答案 1 :(得分:0)
你的整个问题似乎与我完全矛盾。
你永远不会在铁路线路上这样做 -
post GET /posts/:id(.:format) posts#show
取而代之的是routes.rb文件
get 'posts/:id' => 'posts#show'
路由是在优先级的基础上完成的(先到先得),所以如果你在资源:帖子之后添加获取'posts /:id',它就没有用作资源:帖子已经做了它适合你(阅读有关资源的rails路线指南)。
您的表单提交应该是一个帖子数据,如果您使用资源'new'应该是'get'数据,相应的'post'应该是'create'。您的“新”路线有错误,那么您在哪里提交表单以提交表单数据?
我的建议是你保留'resources:post'并删除与你的路径文件相对应的所有其他内容。如果你还有其他一切,那么它应该可以正常工作。
答案 2 :(得分:-1)