【问题标题】:Rails: param is missing or the value is empty: articleRails:参数丢失或值为空:文章
【发布时间】:2014-12-26 15:15:02
【问题描述】:

我是 Rails 新手,我开始按照 ruby​​onrails.org 教程制作 Web 应用程序。

我的应用程序是一个包含文章的博客。我实现了创建和编辑功能,这些功能运行良好,但在尝试访问 http://localhost:3000/articles/2/edit 以编辑文章时突然出错。 错误是ActionController::ParameterMissing in ArticlesController#edit param is missing or the value is empty: articles

这是我的红宝石代码:

类 ArticlesController

def new
    @article = Article.new
end

def edit
    @article = Article.find(params[:id])
    if @article.update(article_params)
        redirect_to @article
    else
        render 'edit'
    end
end

def show
    @article = Article.find(params[:id])
end

def create
    @article = Article.new(article_params)
    if @article.save
        redirect_to @article
    else
        render 'new'
    end
end

private
    def article_params
        params.require(:article).permit(:title, :text)
    end
end

错误警报针对的行是params.require(:articles).permit(:title, :text) 我真的不知道错误在哪里,因为 2 分钟前一切正常...

感谢您的帮助

【问题讨论】:

  • 确保您使用的是:article 而不是:articles

标签: ruby-on-rails ruby


【解决方案1】:

您正在尝试在编辑方法中更新文章。因此,当您导航到“articles/2/edit/”时,它会尝试更新文章 2。但是您没有传递任何参数。

我想你可能想要的是:

def edit
  @article = Article.find(params[:id])
end

def update
  @article = Article.find(params[:id])
  if @article.update(article_params)
    redirect_to @article
  else
    render 'edit'
  end
end

【讨论】:

  • 如果其他人想知道他们是如何遇到同样问题的。我发现本教程中的说明令人困惑。因为它们遵循控制器方法遵循以下顺序的约定:索引、显示、编辑、创建、更新和销毁。最初创建“编辑”后的说明在创建“更新”方法时不显示“编辑”方法,而是在“更新”方法上方显示“创建”方法。因此,如果您像我一样不注意,您可以使用“更新”中的其余内容更新“编辑”方法。
【解决方案2】:

我知道迟到了,但我希望这个解决方案能帮助别人。加ArticleController这两种方法:

def edit
  @article = Article.find(params[:id])
end

def update
    @article = Article.find(params[:id])

    if @article.update(article_params)
      redirect_to @article
    else
      render 'edit'
    end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多