I did search the list, and I found people have similar problems with Ruby
1.9.1, but not directly comparable to my issue.
In my simple case it DOES work, as long as I use two controller actions
instead of just the one...

Meanwhile.. yes, do do stick to Ruby 1.8.7 until I know more :o)

Best regards,
Rolf

Fernando Perez wrote:

> Hahaha!
>
> Search the list, and you'll notice that people have already fallen into
> this trap.
>
> Wait 'til Rails 3 AND Ruby 1.9.2 get released to jump to Rails+Ruby1.9
>
> Stick to Rails 2.3.8 and Ruby 1.8.7 until then.
>



On Sun, Aug 1, 2010 at 2:53 AM, Rolf Pedersen <[email protected]> wrote:

> Hi
>
> First off, I'm using Ruby 1.9.1p378 and Rails 2.3.8.
>
> I was creating a minimal application to test handling of Norwegian special
> characters when I bumped into this strange problem...
>
> I have a simple Car model with fields maker:string and model:string.
> For the controller I planned to just have an index action do all the work:
> class CarsController < ApplicationController
>   def index
>     if request.post?
>       @car = Car.new(params[:car])
>       @car.save
>     end
>     @cars = Car.find(:all)
>   end
> #  def create
> #    @car = Car.new(params[:car])
> #    @car.save
> #    redirect_to :action => :index
> #  end
> end
>
> The corresponding view lists all car models and displays a form to support
> the addition of new car models:
> <h1>Cars</h1>
> <table>
>   <th>maker</th><th>model</th>
>   <% @cars.each do |car| %>
>     <tr>
>       <td><%= car.maker %></td>
>       <td><%= car.model %></td>
>     <td>
>   <% end %>
> </table>
>
> <% form_for(:car, :url => { :action => "index" }) do |f| %>
>   <p>
>     <%= f.label :maker %>
>     <%= f.text_field :maker %>
>   </p>
>   <p>
>     <%= f.label :model %>
>     <%= f.text_field :model %>
>   </p>
>   <p>
>     <%= f.submit 'Add' %>
>   </p>
> <% end %>
>
> Now, this works fine..... until I submit special characters in one of the
> fields.
> If I for example write "Dodge" and "Børnout" in the form fields, I get an
> error like this:
> Encoding::CompatibilityError in Cars#index
>
> Showing *app/views/cars/index.html.erb* where line *#19* raised:
>
> incompatible character encodings: UTF-8 and ASCII-8BIT
>
> Extracted source (around line *#19*):
>
> 16:   </p>
> 17:   <p>
> 18:     <%= f.label :model %>
> 19:     <%= f.text_field :model %>
> 20:   </p>
> 21:   <p>
> 22:     <%= f.submit 'Add' %>
>
>
> But, the entry is added correctly to the database anyway, so if I just
> reload http://localhost:3000/cars, I do see the new entry.
> OK, I thought... I've read quite a few places that there have been (and
> still are) various issues with support for Unicode in the different
> Ruby/Rails version combinations, so I figured that I just didn't have the
> best combination for this.
> But then I temporarily built a new application by using generate scaffold,
> and it all works fine there.
> After some trying and failing I discovered that if I (in my original
> solution) changed the form_for :url option to :action => "create" and added
> a create action in the controller file (commented out in the above
> controller source), it works with special characters and all.
>
> So the only difference is that the form posts the data to the create action
> instead of the index action, and then it works.
>
> I just don't get it! :o/
>
> Anyone has an explanation to offer?
> Would be much appreciated! :o)
>
> Kind regards,
> Rolf
>

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