2

我是 Rails 新手,对 ruby​​ 知之甚少,我刚刚看了 Rails Guide 4.0 的教程。一切都很顺利,只是停留在一个错误上:找不到没有 ID 的帖子。

我按照 Rails Guide Getting Started Of 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 并试一试!但是在创建新帖子后它向我显示错误。

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

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

请帮我解决这个问题,我只是认为这不应该是因为我正在遵循 Rails 指南。

我正在关注 Rails 入门指南,因为它说我添加了索引操作和显示操作。因此,正如书中所说,当您访问此地址 /posts 时,您应该看到所有帖子,并且当您创建新帖子时,它会重定向以显示您输入的最后一篇帖子,

我正在使用redirect_to @post,但随之而来的错误我卡住了然后我使用redirect_to action: :show, id: @post.id

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

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

谢谢

4

1 回答 1

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

于 2013-11-10T09:39:06.610 回答