Ruby on rails 不能';找不到id为show的帖子?

Ruby on rails 不能';找不到id为show的帖子?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我一直在编写RubyonRails v.4.0.0指南,刚刚完成了最后一段代码。但我有三个问题,我认为可能来自一个来源。无论什么原因,我的表演方式似乎都不管用。我有一个“show”视图,但它给了我一个错误“找不到id=show的帖子”。告诉我PostsController的第35行是错误的。我已经找了一段时间了,似乎找不到任何有类似问题的人。这是控制器和视图 控制器: 1 class PostsController < ApplicationController 2

我一直在编写RubyonRails v.4.0.0指南,刚刚完成了最后一段代码。但我有三个问题,我认为可能来自一个来源。无论什么原因,我的表演方式似乎都不管用。我有一个“show”视图,但它给了我一个错误“找不到id=show的帖子”。告诉我PostsController的第35行是错误的。我已经找了一段时间了,似乎找不到任何有类似问题的人。这是控制器和视图

控制器:

    1 class PostsController < ApplicationController
    2
    3   http_basic_authenticate_with name: "dhh", password: "secret",
    4 except: [:index, :show]
    5 
    6   def new
    7     @post = Post.new
    8   end
    9 
    10   def create
    11     @post = Post.new(params[:post])
    12 
    13     if @post.save
    14       redirect_to @post
    15     else
    16       render 'new'
    17     end
    18   end
    19                                                                    
    20   def edit
    21     @post = Post.find(params[:id])
    22   end
    23 
    24   def update
    25     @post = Post.find(params[:id])
    26 
    27     if @post.update(params[:post].permit(:title, :text))
    28       redirect_to @post
    29     else
    30       render 'edit'
    31     end
    32   end
    33 
    34   def show
    35     @post = Post.find(params[:id])
    36   end
    37 
    38   def index
    39     @post = Post.all
    40   end
    41 
    42   def destroy
    43     @post = Post.find(params[:id])
    44     @post.destroy
    45 
    46     redirect_to posts_path
    47   end
    48 
    49   private
    50     def post_params
    51       params.require(:post).permit(:title, :text)
    52     end
    53 end
1类PostsController
视图:

1
2
3标题:
4.
五,

6. 7 8文本: 9 十,

11 12 13 14评论 15 16 17添加评论: 18 19 20 21 |
完全错误是:

ActiveRecord::在PostsController#show中找不到RecordNot 找不到id为show的帖子


注意:我有阅读障碍,所以可能只是拼写错误

params[:id]
等于
“show”
,而不是某个真实的id。可能您试图访问错误的url,如
/posts/show
,而不是
/posts/1
或任何id。

params[:id]
等于
“show”
而不是一些真实的ID。可能你试图访问错误的url,如
/posts/show
,而不是
/posts/1
或任何ID。

我无法评论,因此这是目前的答案,但你能确认你要访问的url包含你要查找的帖子的ID吗?如果它正在寻找ID为“show”的帖子,听起来你可能会选择
yourUrl/posts/show
,而不是
yourUrl/posts/1

我无法发表评论,所以这是一个暂时的答案,但是你能确认你将要找到的帖子的URL包含ID吗?如果它正在寻找ID为“show”的帖子,听起来你可能会选择
yourUrl/posts/show
,而不是
yourUrl/posts/1

你是否将PostController放置在routes.rb中

资源:员额


是否将后控器放置在routes.rb中

资源:员额


你能给我们看一下你的
路线.rb
?你能给我们看一下你的
路线.rb
?嗯。。。这似乎是个问题,但同时指南说我应该能够在我的url中看到我的帖子/显示,我的帖子/索引给了我相同的错误(因此多个问题=>1个来源),所以我应该给你更多的文件,还是我犯了一些愚蠢的错误?@Therafer,你是在看吗?当他们谈论
.erb
模板时,您可能会感到困惑。您的视图文件确实被命名为
/posts/show
,并附加了
.html.erb
,但这与URL没有任何区别(不是直接的)。最终,您的路由文件(routes.rb)指定哪个控制器操作响应请求的URL,并呈现一个类似命名的视图模板(除非您在控制器中另有指定),如何将其更改为响应/posts/show?id=1而不是/posts/1??我的应用程序中也有同样的问题,但我可能想指定更多的参数,而不仅仅是一个idHmm。。。这似乎是个问题,但同时指南说我应该能够在我的url中看到我的帖子/显示,我的帖子/索引给了我相同的错误(因此多个问题=>1个来源),所以我应该给你更多的文件,还是我犯了一些愚蠢的错误?@Therafer,你是在看吗?当他们谈论
.erb
模板时,您可能会感到困惑。您的视图文件确实被命名为
/posts/show
,并附加了
.html.erb
,但这与URL没有任何区别(不是直接的)。最终,您的路由文件(routes.rb)指定哪个控制器操作响应请求的URL,并呈现一个类似命名的视图模板(除非您在控制器中另有指定),如何将其更改为响应/posts/show?id=1而不是/posts/1??我的应用程序中也存在同样的问题,但我可能希望指定更多的参数,而不仅仅是请求正确路由到PostsController中的:show方法的参数。如果路由文件中没有此项,则请求不会到达那么远。请求已正确路由到PostsController中的:show方法。如果路由文件中没有此项,则请求不会到达那么远的距离。
    1 <%= @post.each do |post| %>
    2 <p>
    3   <strong> Title: </strong> 
    4   <%= @post.title %>
    5 </p>
    6 
    7 <p> 
    8   <strong> Text: </strong>
    9   <%= @post.text %>
    10 </p>
    11 
    12 <%end%>
    13 
    14 <h2> Comments </h2>
    15 <%= render @post.comments %>
    16 
    17 <h2>Add a comment:</h2>
    18 <%= render "comments/form" %>
    19 
    20 <%= link_to 'Back to Posts', posts_path %>
    21 | <%= link_to 'Edit Post', edit_post_path(@post) %>