Saturday, 15 May 2010

ruby on rails - getting null value in my table? -



ruby on rails - getting null value in my table? -

i creating employee pay roll application. in having 2 models 1 employee , salary. have added foreign key employee_id in salaries table , employee name in _form.html.erb(salaries) using gem 'rails3-jquery-autocomplete'. have followed steps in gem. foreign key relationship not working. getting null value in field employee_id in salaries table. '

here have attached model,view,controller,routes , everything. kindly check it.

my models

** salary.rb**

class salary < activerecord::base belongs_to :employee, :foreign_key => "employee_id" attr_accessible :basic, :da, :effective_from, :effective_to, :employeesalary, :hra, :ca, :sa, :employee_id end

employee.rb

class employee < activerecord::base has_many :salaries, :foreign_key => "employee_id" attr_accessible :address, :age, :branch, :city, :date_of_birth, :designation, :employee_end_date, :employee_start_date, :gender, :name end

my controllers

salaries_controller.rb

class salariescontroller < applicationcontroller autocomplete :employee, :name, :display_value => :name, :full => true def new @salary = salary.new end def create @salary = salary.new(params[:salary]) if @salary.save flash[:success] = "created new month salary!" redirect_to salaries_path else flash[:error] = "couldn't create salary" render 'new' end end def index @salary = salary.order('created_at desc').paginate(:page => params[:page], :per_page => 10) end def show @salary = salary.find(params[:id]) @employee =employee.all end end

employees_controller.rb

class employeescontroller < applicationcontroller def new @employee = employee.new @salary = @employee.salaries.build end def create @employee = employee.new(params[:employee]) if @employee.save flash[:success] = "created employee successfully!" redirect_to employee_path(@employee) else flash[:error] = "couldn't create employee" render 'new' end end def index @employee = employee.order('created_at desc').paginate(:page => params[:page], :per_page => 10) end def show @employee = employee.find(params[:id]) end end

routes.rb

resources :salaries :autocomplete_employee_name, :on => :collection end resources :employees

_form.html.erb(salaries)

<%= form_for @salary |f| %> <%= f.hidden_field :employee_id, :id => "real_employee_id" %> <span class="help-block">enter employee name</span> <%= autocomplete_field_tag 'throwaway_employee', '', autocomplete_employee_name_salaries_path, :size => 75, :id_element => '#real_employee_id' %>

application.js

//= require jquery //= require jquery_ujs //= require autocomplete-rails //= require_tree .

i have checked throughly can't find error. kindly help me out of issue.

thanks in advance...

i had play code tonight , think know might happening.

when start typing in employee name green list of names pops up. if nail come in straight away form takes whatever have typed far , uses name. fails because name incomplete. have no validation on employee id form works , null employee id saved.

what need utilize downwards arrow key or mouse select 1 of names. when name alter light green , text in text box replaced total name. when submit form match found , works!

so code works, using gui incorrectly.

you should add together line salary.rb file:

validates :employee_id, presence: true

that's theory. please seek out , allow know how go.

ruby-on-rails ruby-on-rails-3 autocomplete foreign-keys jquery-autocomplete

No comments:

Post a Comment