Chris Armstrong
2007-Nov-04  21:49 UTC
Problems with flash messages and characters like ü ö ä
Hello,
Maybe somebody in here can help me. I''m developing an application with
different language support. I use globalize-rails
(http://www.globalize-rails.org) and as i''m from Switzerland i use
de-CH
as default language.
Of course de-CH has special characters like ü, ö, ä.
My problem is now that when i use special characters in the flash
variable i get some strange errors back. But only in the flash[:notice]
string and not in the flash[:error] string.
The error happens at following point:
flash[:notice] = "Das Produkt wurde erfolgreich über!".t
When i take the ü out of the string then it works.
The strange thing is that the ü in the second flash string does not
produce a problem:
flash[:error] = "Das Produkt konnte nicht angelegt über werden!".t
This is a really strange error and it turns me round the bend since 2
days.
It would be great if somebody could give me some hints where the problem
could be located.
Thanks for your help.
Here the error message:
C:/INSTAN~2/rails_apps/bonuspoints/app/controllers/admin_controller.rb:18:
syntax error, unexpected tCONSTANT, expecting kEND
                flash[:error] = "Das Produkt konnte nicht
hinzugef�gt werden!".t
                                    ^
C:/INSTAN~2/rails_apps/bonuspoints/app/controllers/admin_controller.rb:26:
syntax error, unexpected tIDENTIFIER, expecting kEND
            administrator = Administrator.find(:first, :conditions =>
["username = BINARY ? AND password = BINARY ?",
                                                                               
^
C:/INSTAN~2/rails_apps/bonuspoints/app/controllers/admin_controller.rb:26:
syntax error, unexpected tIDENTIFIER, expecting kDO or ''{'' or
''(''
            administrator = Administrator.find(:first, :conditions =>
["username = BINARY ? AND password = BINARY ?",
                                                                                
^
C:/INSTAN~2/rails_apps/bonuspoints/app/controllers/admin_controller.rb:27:
syntax error, unexpected '']'', expecting kEND
                            params[:administrator][:username],
params[:administrator][:password]])
                                                                                
^
C:/INSTAN~2/rails_apps/bonuspoints/app/controllers/admin_controller.rb:71:
syntax error, unexpected $end, expecting kEND
Here the admin controller
class AdminController < ApplicationController
    before_filter :authenticate_administrator, :except => [:login]
    # Pick a unique cookie name to distinguish our session data from
others''
    session :session_key => ''_bonuspoints_admin_session_id''
    def new_product
        @product = Product.new
        if request.post?
            params[:product][''picture_data'']
@params[:file][:content].read
            params[:product][''picture_name'']
@params[:file][:content].original_filename.chomp
            params[:product][''picture_content_type'']
@params[:file][:content].content_type.chomp
            @product = Product.new(params[:product])
            if @product.save
                flash[:notice] = "Das Produkt wurde erfolgreich
hinzugefügt!".t
                redirect_to :action => ''list_product''
            else
                flash[:error] = "Das Produkt konnte nicht hinzugefügt
werden!".t
                render :action => ''new_product''
            end
        end
    end
    def login
        if request.post?
            administrator = Administrator.find(:first, :conditions =>
["username = BINARY ? AND password = BINARY ?",
                            params[:administrator][:username],
params[:administrator][:password]])
            if administrator
                session[:administrator] = administrator
                redirect_to :controller => ''admin'', :action
=>
''stats_overview''
            else
                flash[:error] = "Die Anmeldung ist fehlgeschlagen!"
                render :action => ''login''
            end
        end
    end
    def logout
        session[:administrator] = nil
        flash[:notice] = "Sie haben sich erfolgreich abgemeldet!"
        redirect_to :action => ''login''
    end
    protected
    def authenticate_administrator
        unless session[:administrator]
            flash[:error] = "Sie sind zur Zeit nicht angemeldet!"
            redirect_to :controller => ''admin'', :action
=> ''login''
        end
    end
    def stream_csv
        filename = params[:action] + ".csv"
        #this is required if you want this to work with IE
        if request.env[''HTTP_USER_AGENT''] =~ /msie/i
            headers[''Pragma''] = ''cache''
            headers["Content-type"] = "text/plain"
            headers[''Cache-Control''] =
''private''
            headers[''Content-Disposition''] = "attachment;
filename=\"#{filename}\""
            headers[''Expires''] = "0"
        else
            headers["Content-Type"] ||= ''text/csv''
            headers["Content-Disposition"] = "attachment;
filename=\"#{filename}\""
        end
        render :text => Proc.new { |response, output|
        csv = FasterCSV.new(output, :col_sep => ";", :row_sep =>
"\r\n")
        yield csv }
    end
end
Here the application controller:
# Filters added to this controller apply to all controllers in the
application.
# Likewise, all the methods added will be available for all controllers.
class ApplicationController < ActionController::Base
    before_filter :set_charset, :set_locale
    model :cart
    def set_charset
        content_type = headers["Content-Type"] ||
"text/html"
        if /^text\//.match(content_type)
            headers["Content-Type"] = "#{content_type};
charset=utf-8"
        end
        #content_type = headers["Content-Type"] ||
"text/html"
        #if /^text\//.match(content_type)
        #    headers["Content-Type"] = "#{content_type};
charset=iso-8859-1"
        #end
    end
    def set_locale
        #Locale.set ''de-CH''
        if !params[:locale].nil? &&
LOCALES.keys.include?(params[:locale])
            Locale.set LOCALES[params[:locale]]
        else
            redirect_to params.merge( ''locale'' =>
Locale.base_language.code )
        end
    end
    protected
    def authenticate
        unless session[:user]
            flash[:error] = "Sie sind zur Zeit nicht angemeldet!".t
            redirect_to :controller => ''user'', :action
=> ''login''
        end
    end
    # used for calculating the points of the user
    def calculate_user_points
        if session[:user]
            @debited_transactions = Accounttransaction.find(:all,
:conditions =>
"user_id=''#{session[:user][:id]}''")
            @pending_transactions = Accounttransaction.find(:all,
:conditions => "user_id=''#{session[:user][:id]}'' and
pending_status=''P''")
            @accepted_transactions = Accounttransaction.find(:all,
:conditions => "user_id=''#{session[:user][:id]}'' and
pending_status=''A''")
            @declined_transactions = Accounttransaction.find(:all,
:conditions => "user_id=''#{session[:user][:id]}'' and
pending_status=''D''")
            @total_point_credit count_point_credit(@accepted_transactions)
            @total_point_debit count_point_debit(@debited_transactions)
            @total_point_pending count_point_credit(@pending_transactions)
            @total_point_declined count_point_credit(@declined_transactions)
        end
    end
    # used to count total points
    def count_point_credit(records)
        total_credit = 0
        records.each do |r|
            total_credit += r.points_credited.to_i
        end
        return total_credit
    end
    def count_point_debit(records)
        total_debit = 0
        records.each do |r|
            total_debit += r.points_debited.to_i
        end
        return total_debit
    end
end
-- 
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---