在控制器中重构rails params以检查params是否存在

时间:2015-05-18 10:53:38

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

如何为更多DRY控制器重构此代码?

@places = Place
@places = @places.address(params[:address]) if params[:address].present?
@places = @places.address(params[:name]) if params[:name].present?
@places = @places.price_greater_than_equal params[:price_from] if params[:price_from].present?
#and more..

方法地址是从模型中的范围构建的 抱歉英文不好

1 个答案:

答案 0 :(得分:1)

为什么不使用Rails方式?如果存在params,它们将被更新。验证应该在必要的模型中。

 def update
    @places.update(places_params)
    respond_with(@places)
  end

private
def set_places
  @places = Places.find(params[:id])
end

def places_params
  params.require(:places_params).permit(:address, :postcode, address_attributes: :address (nested attributes)) 
end