4

我一直在学习rails

http://guides.rubyonrails.org/getting_started.html

在控制器中执行保存数据时遇到错误。运行博客时出现的错误是:“找不到 PostsController 的动作 'show'”

**

我的posts_controller.rb 代码是

**

class PostsController < ApplicationController
def new
end
def create
@post=Post.new(params[:post].permit(:title,:text))
@post.save
redirect_to @post
end

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

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

**

我的 show.html.rb 代码是

**

<p>
<strong> Title:</strong>
<%= @post.title %>
</p>
<p>
<strong> Text:</strong>
<%= @post.text %>
</p>

**

create_posts.rb 的代码

**

class CreatePosts < ActiveRecord::Migration
  def change
    create_table :posts do |t|
      t.string :title
      t.text :text

      t.timestamps
    end
end

请帮我弄清楚为什么会出现这个错误

4

2 回答 2

7

PostsController#show方法应该是公开的。

class PostsController < ApplicationController
  def new
  end

  def create
    @post=Post.new(params[:post].permit(:title,:text))
    @post.save
    redirect_to @post
  end

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

private

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

end
于 2013-08-01T11:16:15.143 回答
1

你为什么把你的表演动作放在私人中?只是把它放在私人空间之外。

def new
  @post = Post.new
end
def create
 @post=Post.new(params[:post].permit(:title,:text))
 if @post.save
   redirect_to @post
 else
   render 'new'
 end
end

def show
  @post=Post.find_by_id(params[:id])
  if @post.blank?
    flash[:error] = 'The Post not found in the database'
    redirect_to root_path 
  end
end

private

def your_private_functions

end
于 2013-08-01T11:21:08.547 回答