如何修复rails无法找到没有ID错误的帖子

时间:2013-11-10 07:46:25

标签: ruby-on-rails-4

我是rails的新手,很少知道ruby,我刚刚从Rails Guide 4.0中盯着教程。一切都很好只是卡在一个错误上:找不到没有ID的帖子。

我在Rails指南Rails入门中做了所有事情。

以下是rails guide的代码:

def show
  @posts = Post.find(params[:id])
end

以下是查看代码:

<p>
  <strong>Title:</strong>
  <%= @posts.title %>
</p>

<p>
  <strong>Text:</strong>
  <%= @posts.text %>
</p>

此代码栏指南告诉您最终应该能够创建新帖子。访问localhost:3000 / posts / new并试一试!但在创建新帖后它显示错误。

我认为这可能是问题,因为我没有创建索引操作,所以我完成了索引,在索引操作后,当我尝试访问此地址时,它应该显示来自数据库的所有记录,而不是显示记录显示相同的错误:找不到没有ID的帖子

我在stackoverflow上尝试了太多帖子,但都与其他一些对我没用的操作有关。

请帮我解决这个问题,我只是认为不应该因为我正在关注rails指南。

我正在关注rails入门指南,因为它说我添加了索引操作并显示操作。因此,当你访问这个地址/帖子时,你会看到所有帖子,当你创建新帖子时它会重定向显示你输入的上一篇文章,

我正在使用redirect_to @post但是出现错误我卡住了然后我使用redirect_to action: :show, id: @post.id

当我创建一个新帖子然后它重定向到/ posts?id = last_inserted_id时它正在工作但是因为我看到其他脚手架地址应该是帖子/ 1或等等当我访问/发布时它应该显示所有帖子操作定义为控制器中的索引。

routes.rb

<code>
  Blog::Application.routes.draw do
  root "welcome#new"

  resource :posts
</code>

控制器:

class PostsController < ApplicationController


  def index
    @post = Post.all
    respond_to do |format|
      format.html #index.html.erb
    end
  end

  def show
    @post = Post.find(params[:id])
    respond_to do |format|
      format.html #show.html.erb
    end
  end

  def new

  end

  def create
    @post = Post.new post_params
    @post.save
    redirect_to action: :show, id: @post.id
  end

  private
    def post_params
      params.require(:post).permit(:title, :message)
    end
end

由于

1 个答案:

答案 0 :(得分:1)

您应该使用resources :posts而不是resource

resources生成“完整”CRUD - 7次操作http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Resources.html#method-i-resources

resource生成路线uniq资源(没有操作showhttp://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Resources.html#method-i-resource