use*_*914 6 ruby nomethoderror
原谅我的无知,但我不仅是Ruby的新品,而且是一般的编程.我正在研究rubyonrails.org边缘指南的例子.并且我收到以下错误,尽管我查看了自应用程序上次工作以来我输入的每一段代码,但我无法修复它.
PostsController中的NoMethodError #create
未定义方法`permit'for {"title"=>"","text"=>""}:ActiveSupport :: HashWithIndifferentAccess
这就是我的posts_controller.rb的样子:
class PostsController < ApplicationController
def new
@post = Post.new
end
def create
@post = Post.new(params[:post].permit(:title, :text))
if @post.save
redirect_to action: :show, id: @post.id
else
render 'new'
end
end
def show
@post = Post.find{params[:id]}
end
def index
@posts = Post.all
end
end
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
预先感谢您的任何帮助!
而不是这一行:
@post = Post.new(params[:post].permit(:title, :text))
Run Code Online (Sandbox Code Playgroud)
试试这个
@post = Post.new(params[:post])
Run Code Online (Sandbox Code Playgroud)
看起来你遇到了strong_parameters并且有一些教程混音.
如果您确实想使用strong_parameters,请将gem添加到Gemfile并使用以下命令创建初始化程序:
ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection)
Run Code Online (Sandbox Code Playgroud)
然后您的控制器可以是:
class PostsController < ApplicationController
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
if @post.save
redirect_to action: :show, id: @post.id
else
render 'new'
end
end
def show
@post = Post.find_by_id(params[:id].to_i)
end
def index
@posts = Post.all
end
private
def post_params
params.require(:post).permit(:title, :text)
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5798 次 |
| 最近记录: |