我想将整个对象传递给我的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;
字段,但出于某种原因我一直收到此错误。
为什么?
index.html.erb
viewed
控制器
<td><%= link_to 'Show', article_path(article) %></td>
答案 0 :(得分:3)
在代码中,您有以下行
params.require(:article).permit!
如果require
哈希不包含params
哈希,article
方法调用将引发您遇到的错误。
从错误页面可以看出,您当前的参数是
{"id"=>"1"}
没有article
哈希。这就是问题所在。
进一步检查您的代码,以下行在所有
中都没有意义@article.update(article_params)
您假装从@article
操作中的某些参数更新show
。但是,您至少有两个问题:
show
操作,不应该更新资源我很可能只想增加计数器。如果是这种情况,那么您的行动应该是
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