2

私は Rails が初めてで、Ruby についてほとんど知りません。Rails Guide 4.0 のチュートリアルをじっと見ただけです。1 つのエラー : ID のない投稿が見つかりませんでした。

Rails Guide Getting Started Of Rails のようにすべてを行いました。

Railsガイドのコードは次のとおりです。

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 にアクセスして、試してみてください! しかし、新しい投稿を作成した後、エラーが表示されます。

インデックスアクションをまだ作成していないため、問題になる可能性があると思ったので、インデックスを作成しました。インデックスアクションの後、通常このアドレスにアクセスしようとすると、データベースからすべてのレコードが表示されますが、同じエラーを示すレコードが表示されます: t ID のない投稿を見つける

私はスタックオーバーフローであまりにも多くの投稿を試みましたが、すべて私にとって役に立たない他のアクションに関連しています.

この問題を解決するのを手伝ってください。レールガイドに従っているので、そうすべきではないと思っています。

index アクションと show アクションを追加したと書かれているので、Rails Getting Started Guide に従っています。本のように、このアドレス /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 リソースを生成するとき(アクションなしshow) http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Resources.html#method-i-resource

于 2013-11-10T09:39:06.610 に答える