0

在本指南上:http: //guides.rubyonrails.org/getting_started.html

关于主题 5.7 显示帖子,在创建show.html.erb文件后我应该得到错误:提交ActiveModel::ForbiddenAttributesError表单时,但我进入NoMethodErrorPosts#show.

谁能告诉我我做错了什么,或者解决这个问题?

def PostsController < ApplicationController

    def new
    end

    def create
       @post = Post.new(post_params)
       @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
4

3 回答 3

3

您的 show 方法是私有的,将其移至控制器中的 private 关键字上方,您应该已经准备就绪。如下图。。

def PostsController < ApplicationController

   def new
   end

   def create
     @post = Post.new(post_params)
     @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-07-31T18:46:44.290 回答
1

当您使用private时,以下所有方法private都将成为私有方法。但是,另一种选择是只说private :post_params为了使post_params私有化。

http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Classes#Declaring_Visibility

于 2013-08-01T18:44:26.077 回答
0

确保您showPostsController.

def show
  @post = Post.find(params[:id])
end
于 2013-07-31T17:37:54.693 回答