On 19 Nov 2008, at 11:52, hema gonaboina wrote:

> Hi All,
>             I need to update the records in the mysql with the data  
> fields from the xml where the id field not presented in the database,
> instead we took the number as primary key but not auto_incremented.
>
> I treid with many attempts
> for example my view as follows ..
>
Your code is pretty impenetrable by virtue of the duplication, bits  
commented out etc... but if you don't have a primary key column you  
should be using set_primary_key to tell rails which column is the  
primary key

Fred
>   <h1>Editing employee</h1>
> <% form_tag :action =>'update',:id => @employee.number do -%>
> <table>
>       <tr>
>             <td>
>               <%=  label 'Employ_No','Employee Number' %>
>             </td>
>             <td>
>               <%= text_field 'employee','number',:value =>  
> @employee.number,:size => "16",:maxlength => "20",:id=>'number' %>
>
>             </td>
>       </tr>
>       <tr>
>             <td>
>               <%=  label 'Employ_Name','Employee Name' %>
>             </td>
>             <td>
>                <%= text_field 'employee','name',:value =>  
> @employee.name,:size => "16",:maxlength => "20",:id=>"employ_name" %>
>             </td>
>       </tr>
>       <tr>
>             <td>
>               <%=  label 'Employ_Job','Employee Job' %>
>             </td>
>             <td>
>             <%= text_field 'employee','job',:value =>  
> @employee.job,:size => "16",:maxlength => "20",:id=>"employ_job" %>
>             </td>
>       </tr>
>       <tr>
>             <td>
>               <%=  label 'Employ_Salary','Employee Salary' %>
>             </td>
>             <td>
>               <%= text_field 'employee','salary',:value =>  
> @employee.salary,:size => "16",:maxlength =>  
> "20",:id=>"employ_salary" %>
>             </td>
>       </tr>
> </table>
>  <%= submit_tag "Save" %>
> <% end %>
>
>
> I tried with text_field_tag but i found this is the right way since  
> we can access through the params[:employee] for all values and  
> params[:employee][:name] for individual fields
>
> and in my controller
>
>   def update
>     begin
>            puts "In update"
>            no = params[:id]
>            employ = Employee.new
>            employ.number = params[:employee][:number]
>            employ.name = params[:employee][:name]
>            employ.job = params[:employee][:job]
>            employ.salary = params[:employee][:salary]
>          #  puts "#{params[employ_no]}"
>            puts "#{params[:employee][:employ_no]}"
>            puts "#{params[:employee][:name]}"
>            puts "#{params[:id]}"
>
>          employee = Employee.find(:first,:conditions =>  ["number  
> = ?",no])
>
>           @emp = Employee.find(:first,:conditions => ["number  
> = ?",no])
>
>           puts "before update"
>
>        #     if @emp.update(:no,params[:employee]) then
>        #             puts "success"
>        #             reder :text => "success"
>        #     else
>        #             puts "failed"
>        #             render :text => "failed"
>        #     end
>
>           if @emp.update_attributes(params[:employee]) then
>             puts "success"
>             reder :text => "success"
>           else
>             puts "failed"
>             render :text => "failed"
>           end
>
>          # employee.update_attribute(:number,employ.number)
>
>           puts "updated"
>           #if @emp!= nil then
>           #    @emp.number = params[:employ_no]
>            #   @emp.name = params[:employ_name]
>            #   @emp.job = params[:employ_job]
>            #   @emp.salary = params[:employ_sal]
>          # end
>            puts "#{params[:employee]}"
>            puts @emp
>
>
>
>     rescue => e
>       puts "error is #{e}"
>     end
>   end
>
>
> Where my model has only 4 fields name,number,job,salary (here number  
> is the primary key)
> I tried with all the cases and vexed, It is througin error for each  
> case
>
> @emp.update(:number,params[:employee])  # ERROR : The private method  
> 'update'  called
>
> @emp.update_attributes(params[:employee])  # Mysql::Error:  
> #42S22Unknown column 'id' in 'where clause': UPDATE `employees` SET  
> `salary` = '20000', `number` = 6, `job` = 'se', `name` = 'xxx' WHERE  
> `id` = NULL
>
> @emp.update_attributes(employ) # ERROR is undefined method  
> `stringify_keys!' for #<Employee>
>
>
> How to achieve the updating? Please anybody help me..
>
>
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to