Wednesday, March 31, 2010

Nested form with form_remote_tag

You may have a nested form for category within a root form as follows. And, you may use 'form_remote_tag' but if you click on the submit button for the nested form, it submits the root form.

%= start_form_tag :action => 'create' %>

div id="categories">
% form_remote_tag (:update => 'categories',
:url => { :action => 'add_category' }) do %>
%= text_field_tag 'new_price' %>
%= submit_tag 'Add' %>
% end %>
/div>


I have a solution even though it does not look pretty. You can just insert another form_remote_tag above the nested form:

%= start_form_tag :action => 'create' %>

%# faked form to avoid to submit the main form when addding review %>
% form_remote_tag(:url=>{:action =>'add_item'})do %>
% end %>


div id="categories">
% form_remote_tag (:update => 'categories',
:url => { :action => 'add_category' }) do %>
%= text_field_tag 'new_price' %>
%= submit_tag 'Add' %>
% end %>
/div>

% end_form_tag %>

Tuesday, March 23, 2010

error: Data truncated for column

We canot alter a nullable column when it is empty at MySQL.

Thus, if I want to change the column 'size_column' that are null to non-nu;;able colume, I got the following error:

== VerificationTries: migrating ==============================================
-- change_column(:associations, :size_column, :integer, {:limit=>3, :null=>false, :default=>0})
rake aborted!
An error has occurred, all later migrations canceled:

Mysql::Error: Data truncated for column 'size_column' at row 1: ALTER TABLE `associations` CHANGE 'size_column' 'size_column' mediumint DEFAULT 0 NOT NULL

Friday, March 5, 2010

rcov error on Windows

I have the following error at "rake test:coverage" at rcov 0.8.1.2 - I cannot install rcov-0.9.8:

0 tests, 0 assertions, 0 failures, 0 errors
c:/ruby-1.8.7-p72-i386-mswin32/lib/ruby/1.8/rexml/formatters/pretty.rb:131:in `[]': no implicit conversion from nil to integer (TypeError)

I've been lookin for the solution for this and I finally found one at "http://blog.andischacke.com/2009/03/problem-with-rcov-and-ruby-187.html".

I followed the step as he mentioned and it works now.
In summary, you need to change "lib/rcov/report.rb" of your rcov gem

if RUBY_VERSION == "1.8.6" && defined? REXML::Formatters::Transitive

into

if ["1.8.7", "1.8.6"].include?(RUBY_VERSION) && defined? REXML::Formatters::Transitive

Then, rerun

rake test:coverage

Monday, March 1, 2010

ThinkingSphinx GetLastError in Windows

I have the following error when I start or stop or restart the sphinx server after Iaccidentally restarted windows while sphinx was runnung:

WARNING: could not open pipe (GetLastError()=2)
FATAL: stop: error terminating pid 24256

Then, look up sphinx_conf.pid file and delete the file to remove pid 24256. That is, I have a log file named "searchd.development.pid" under "rails_project/log". The pid file has "24256". Thus, I deleted the file and "rake ts:start" and works well.