我怎样才能改善我的" newname"方法

时间:2015-06-03 22:16:36

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我是学生,我得到了备忘录(没有解释) 我的以下代码被窃听,可以更好。你会如何改进我的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

3 个答案:

答案 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(在控制器中以私有方式声明)

Rails 3:

div::before {
  content: url(image.jpg);
}

Rails 4

 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