Reputation:
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
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