1

我一直在研究 Ruby on Rails v.4.0.0 指南,并且刚刚完成了最后一段代码。但我有 3 个我认为可能来自 1 个来源的问题。无论出于何种原因,我的 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 <%= @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) %>

完整的错误是:

ActiveRecord::RecordNotFound in PostsController#show 找不到 id=show 的帖子

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

4

3 回答 3

5

params[:id]等于"show"而不是一些真实的ID。可能您正在尝试访问错误的 url,/posts/show而不是/posts/1ID 或任何 ID。

于 2013-08-29T14:34:11.073 回答
2

我无法发表评论,所以这是现在的答案,但您能否确认您要访问的 URL 包含您要查找的帖子的 ID?如果它正在寻找 ID 为“show”的帖子,听起来您可能会去yourUrl/posts/show而不是yourUrl/posts/1

于 2013-08-29T14:34:39.433 回答
0

您是否将 PostController 放在 routes.rb 中?

资源:发布

于 2013-08-29T16:16:13.687 回答