我在创建的页面出现问题。我得到的消息是上面的。这是我的文章controller.rb页面代码。学习红宝石及其带来的挑战。我被困在这一部分。并且我一直有关于section.once的问题我发布了我的代码。我不知道我是否搞砸了我的代码或类似的东西。
class ArticlesController< ApplicationController中
def index
@articles = Article.all
end
def new
@article =Article.new
end
def edit
@article = Article.new(article_params[:id])
end
def create
@article =Article.new(article_params)
if@article.save
flash[:notice] = "Article was successfully created"
redirect_to article_path(@article)
else
render 'new'
end
end
def update
@article =Article.find(params[:id])
if@article.update
flash[:notice] = "Article was successfully updated"
redirect_to article_path(@article)
else
render 'edit'
end
end
def show
@article =Article.find(params[:id])
end
end
这是错误页面未定义的局部变量或方法`article_params'对于#
提取的来源(第12行): 10 11 12 13 14 15
def编辑 @article = Article.new(article_params [:id]) 端
i get on ruby rails
答案 0 :(得分:1)
Yip,正如Alfie上面所说,你错过了你的article_params。 在轨道4(我假设是你正在使用的)中,存在强参数的概念,这是一种仅允许你期望通过的字段的方式。
取决于您的"文章"对象,你需要添加这样的东西:
def article_params
params.require(:article).permit(:title, :body)
end
注意,您需要调整它以适应您的实际字段。
此外,可能是副本&粘贴错误,但是养成正确缩进代码的习惯是个好主意!祝你的代码工作顺利:)
答案 1 :(得分:0)
您需要在控制器中定义article_params
答案 2 :(得分:0)
您忘记将article_params传递给更新。
def update
@article = Article.find(params[:id])
if @article.update(article_params)
flash[:notice] = 'Article was successfully updated'
redirect_to article_path(@article)
else
redirect 'edit'
end
end