user3301201
user3301201

Reputation:

multiple conditions in ruby on rails

I want to apply multiple conditions in ruby on rails app like below:

  if !params[:parameters].blank? && params[:parameters] == "Designation" 
       puts "Hassan"
       @dynamicDesignation = ""
       @dynamicCompany = ""
       @dynamicFrom = ""
       @dynamicTo = ""
       @Profession = Profession.new( :UserID => current_user.id, :Designation => @dynamicDesignation, :Company => @dynamicCompany, :Job_From => @dynamicFrom, :Job_To => @dynamicTo)
       #@Profession = @Profession.save
    else
      puts "Ali"
       @dynamicDesignation = params[:parameters]
       @dynamicCompany = params[:parametersCompany]
       @dynamicFrom = params[:ParametersFromProf]
       @dynamicTo = params[:ParametersToProf]
       @Profession = Profession.new( :UserID => current_user.id, :Designation => @dynamicDesignation, :Company => @dynamicCompany, :Job_From => @dynamicFrom, :Job_To => @dynamicTo)
       #@Profession = @Profession.save
    end
      # redirect_to '/educations'
      render 'index'
  end

And parameters is dynamic control i.e below:

 var input = "<input name='parameters' id='field' type='text' value='Designation' style='text-align:center;' onblur='WaterMarkDesignation(this, event);' onfocus='WaterMarkDesignation(this, event);'/>";
                var input1 = "<input name='parametersCompany' id='field' type='text' value='Company' style='text-align:center;' onblur='WaterMarkCompany(this, event);' onfocus='WaterMarkCompany(this, event);'/>"

But its not going to the if condition, It only runs else condition, why. Kindly suggest me. Thanks

Upvotes: 0

Views: 230

Answers (1)

Richard Peck
Richard Peck

Reputation: 76774

Firstly, if you're trying to ensure you don't get blank items saved into the DB, you should look at using nilify_blanks

I would do this:

  #app/models/profession.rb
  Class Profession < ActiveRecord::Base
      nilify_blanks
  end

  #app/controllers/professions_controller.rb
  def create
      @Profession = Profession.new(profession_params)
      @Profession.save
      render 'index'
  end

 private

 def profession_params
     params.require(:profession).permit(:designation, :job_from, :job_to, :company).merge(userID: current_user.id)
 end

Placeholder

Secondly, you're trying to prevent a placeholder (Designation) from being sent, instead of using value, why don't use placeholder

This will show the text you want, but will treat as blank unless it's been populated by the user:

<input name='parameters' id='field' type='text' placeholder='Designation' style='text-align:center;' onblur='WaterMarkDesignation(this, event);' onfocus='WaterMarkDesignation(this, event);'/>

Upvotes: 1

Related Questions