Ruby on rails 访问资源时出错:";缺少参数或值为空:article";

Ruby on rails 访问资源时出错:";缺少参数或值为空:article";,ruby-on-rails,Ruby On Rails,我想将整个对象传递给我的show action,以便更新其已查看的字段,但由于某些原因,我一直收到此错误 为什么呢 index.html.erb <td><%= link_to 'Show', article_path(article) %></td> 在代码中有以下行 params.require(:article).permit! 如果params散列不包含article散列,则require方法调用将引发您遇到的错误 从错误页面可以看到,当前参数为

我想将整个对象传递给我的show action,以便更新其
已查看的
字段,但由于某些原因,我一直收到此错误

为什么呢

index.html.erb

<td><%= link_to 'Show', article_path(article) %></td>

在代码中有以下行

params.require(:article).permit!
如果
params
散列不包含
article
散列,则
require
方法调用将引发您遇到的错误

从错误页面可以看到,当前参数为

{"id"=>"1"}
没有
文章
散列。这就是问题所在

进一步检查您的代码,下面这一行毫无意义

@article.update(article_params)
您可以假装从
显示
操作中的某些参数更新
@文章
。但是,这里至少有两个问题:

  • 参数不会以任何方式传递
  • 这是一个
    show
    操作,不应该更新资源
  • 在我看来,你很可能只是想增加计数器。如果是这样的话,你的行动应该是

    def show
      @article = Article.find(params[:id])
      @article.viewed += 1
      @article.save!
    end
    
    或者你可以使用更好的方法


    在代码中有以下行

    params.require(:article).permit!
    
    如果
    params
    散列不包含
    article
    散列,则
    require
    方法调用将引发您遇到的错误

    从错误页面可以看到,当前参数为

    {"id"=>"1"}
    
    没有
    文章
    散列。这就是问题所在

    进一步检查您的代码,下面这一行毫无意义

    @article.update(article_params)
    
    您可以假装从
    显示
    操作中的某些参数更新
    @文章
    。但是,这里至少有两个问题:

  • 参数不会以任何方式传递
  • 这是一个
    show
    操作,不应该更新资源
  • 在我看来,你很可能只是想增加计数器。如果是这样的话,你的行动应该是

    def show
      @article = Article.find(params[:id])
      @article.viewed += 1
      @article.save!
    end
    
    或者你可以使用更好的方法


    该记录是否将在没有Active record的保存或更新方法的情况下保存?您可以在的文档中轻松找到确认信息,该记录是否将在没有Active record的保存或更新方法的情况下保存?您可以在的文档中轻松找到确认信息