Ruby教程第5.7章

时间:2013-07-31 17:34:38

标签: ruby-on-rails ruby

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

关于5.7显示帖子主题,在创建show.html.erb文件后,我应该在提交表单时收到错误:ActiveModel::ForbiddenAttributesError,而是在{{1}中获得NoMethodError }}

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

Posts#show

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

确保您在show中定义了PostsController方法。

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