我是学生,我得到了备忘录(没有解释)
我的以下代码被窃听,可以更好。你会如何改进我的controller#newname
方法?谢谢你的时间!
class ReviewController < ApplicationController
def index
@reviews = Review.all.order(created_at: :desc)
end
def newname
@review = Review.find(params[:id])
if @review.update_attribute(:title, sanitize(params[:title]))
format.json { render json: { status: 200 } }
else
format.json { render json: { status: 500 } }
end
end
end
答案 0 :(得分:0)
最大的缺陷是update_attribute
会跳过所有验证,因此,你的else语句将很少/永远不会被执行。将其更改为:
@review.name = sanitize(params[:title])
if @review.save
#...
它应该好多了。
答案 1 :(得分:0)
我想你或许可以做类似的事情:
update a join
b
on a.value = b.name
set a.value = b.id;
想要留在轨道上&#39;让公约为你工作。
这解决了
答案 2 :(得分:0)
基于BroiSatse的答案,我肯定会使用save而不是update_attribute。我还会返回发生的错误,以便用户可以解析或显示它们。如果您使用的是Rails 4,请使用strong params(在控制器中以私有方式声明)
div::before {
content: url(image.jpg);
}
def newname
@review = Review.find(params[:id])
@review.title = sanitize(params[:title])
if @review.save
format.json { render json: { status: 200 } }
else
render :json => {:errors => @review.errors.full_messages}, :status => 422
end
end