在if语句ruby之前设置变量

时间:2016-10-26 19:31:43

标签: ruby-on-rails if-statement

我正在使用rails,我有一个名为Car的activerecord类。在我正在构建的应用程序中,应用程序允许用户在一个页面中添加新车,如果不是,他们可以选择已经存在的那个。

我在尝试提出解决方案时遇到了困难,虽然它们都可以工作但只会在代码的某些部分执行,因为它在if / else语句中。

ad_group_controllers.rb

git reset --soft HEAD@{1}

基本上,if语句表明,如果广告组参数中有文件,则会创建一个汽车,如果没有,则应该保留

if params[:ad_group][:file]
        @car = Car.create(year: params[:ad_group][:car][:year],model: params[:model],make_id: params[:make], trim: params[:trim])
        @car.update(file: params[:ad_group][:file])
        @ad_group.car = @car
    else
        @car = Car.find(params[:ad_group][:car][:id])
        @trim = params[:trim] == 'none' ? nil : params[:trim]
        @promotional_logo = params[:promotional_logo].blank? || params[:promotional_logo].downcase == 'none' || params[:promotional_logo] == '0' ? nil : PromotionalLogo.find(params[:promotional_logo])
        if (@promotional_logo && @ad_group.promotional_logo.nil?) || (@promotional_logo.nil? && @ad_group.promotional_logo)
            @ad_group.promotional_logo = @promotional_logo
            @ad_group.adjust_for_promotional_logo
        end
        @ad_group.update_attributes(make: @make, car: @car, trim: @trim, client: @client, rollover: params[:ad_group][:rollover], promotional_logo: @promotional_logo || nil)
        AdGroup.fields.each do |field|
            @ad_group[field] = params[:ad_group][field]
        end
    end
    @ad_group.ads.each do |ad|
        url = @ad_group.car.file.blank? ? nil : @ad_group.car.file.url
        car = @ad_group.car.file.blank? ? nil : @ad_group.car
        ad.images.find_by(name: 'car').update(url: url, car: car)

        url = @ad_group.promotional_logo.blank? ? nil : @ad_group.promotional_logo.file.url
        logo = @ad_group.promotional_logo.blank? ? nil : @ad_group.promotional_logo
        ad.images.find_by(name: "promotional_logo").update(url: url, promotional_logo: logo)

        ad.texts.find_by(name: "client_name").update(content: @client.name)

        if @ad_group.car.blank?
            car_name = ''
        else
            car_name = "#{@car.year} #{@make.name} #{@car.model}"
            car_name += " #{@car.trim}" unless params[:trim] == 'none' || params[:trim].blank?
        end
        ad.texts.find_by(name: "car_name").update(content: car_name)

以下代码必须针对这两种情况执行。如果不重复if和else中的代码,最好的方法是什么。

0 个答案:

没有答案