访问资源时出错:“param丢失或值为空:文章”

时间:2016-01-06 19:41:59

标签: ruby-on-rails

我想将整个对象传递给我的show动作以更新其WITH transfers AS( SELECT i, random()-0.3 AS quantity FROM generate_series(1,100) as i ) SELECT i, quantity, sum(quantity) OVER (ORDER BY i) from transfers; 字段,但出于某种原因我一直收到此错误。

enter image description here

为什么?

index.html.erb

viewed

控制器

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

1 个答案:

答案 0 :(得分:3)

在代码中,您有以下行

params.require(:article).permit!

如果require哈希不包含params哈希,article方法调用将引发您遇到的错误。

从错误页面可以看出,您当前的参数是

{"id"=>"1"}

没有article哈希。这就是问题所在。

进一步检查您的代码,以下行在所有

中都没有意义
@article.update(article_params)

您假装从@article操作中的某些参数更新show。但是,您至少有两个问题:

  1. 参数不以任何方式传递
  2. 这是一个show操作,不应该更新资源
  3. 我很可能只想增加计数器。如果是这种情况,那么您的行动应该是

    def show
      @article = Article.find(params[:id])
      @article.viewed += 1
      @article.save!
    end
    

    甚至更好,您可以使用increment!

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