Loading ...
Sorry, an error occurred while loading the content.
 

Re: [id-ruby] custom error messages di rails

Expand Messages
  • Andry S Huzain
    ... ini bisa kita potong kompas meng-override default error messages. Taruh saja line ini di environment.rb:
    Message 1 of 8 , Sep 3, 2007
      On 9/3/07, dhendy ferdian <dhendy_ferdian@...> wrote:
      > Klo aku biasa pake "error_message_on" dit
      >
      > implementasi sederhananya kaya gini
      > "mau kasih validasi not null di field description"
      >
      > di Modelnya
      > ==========
      >
      > validates_presence_of :description, :message => "tidak boleh kosong"

      ini bisa kita potong kompas meng-override default error messages.

      Taruh saja line ini di environment.rb:

      ActiveRecord::Errors.default_error_messages[:empty] = "nggak boleh kosong"

      Nama2 token error bisa dicek di ../lib/active_record/validations.rb



      --
      http://andryshuzain.com
    • ugi udah
      Klo saya sih coba tetep pake error_messages_for, cuma application_helper.rb nya di overide (cara kotor ga yah ?) module ApplicationHelper def
      Message 2 of 8 , Sep 3, 2007
        Klo saya sih coba tetep pake error_messages_for, cuma application_helper.rb nya di overide (cara kotor ga yah ?)

        module ApplicationHelper
        def error_messages_for(object_name, options = {})
        options = options.symbolize_keys
        object = instance_variable_get("@#{object_name}")
        if object && !object.errors.empty?
        content_tag("div",
        content_tag(
        options[:header_tag] || "h2",
        "#{object.errors.count} error ditemukan"
        ) +
        content_tag("p", "Berikut ini daftar errornya:") +
        content_tag("ul", object.errors.full_messages.collect do |msg|
        content_tag("li", msg.gsub(/^\w+ /,""))
        end
        ),
        "id" => options[:id] || "errorExplanation",
        "class" => options[:class] || "errorExplanation"
        )
        else
        ""
        end
        end
        end

        emang ada beberapa kelemahan sih, mungkin untuk msg.gsub(/^\w+ /,"") perlu diperbaiki lagi

        ----- Original Message ----
        From: Aditya Agustyana <aditya_jamop@...>
        To: id-ruby@yahoogroups.com
        Sent: Monday, September 3, 2007 2:13:31 PM
        Subject: [id-ruby] Re: custom error messages di rails













        --- In id-ruby@yahoogroups .com, dhendy ferdian <dhendy_ferdian@ ...> wrote:

        >

        > Klo aku biasa pake "error_message_ on" dit

        >

        > implementasi sederhananya kaya gini

        > "mau kasih validasi not null di field description"

        >

        > di Modelnya

        > ==========

        >

        > validates_presence_ of :description, :message => "tidak boleh kosong"

        >

        > di viewnya

        > ========

        > <%= flash[:notice] %>

        >

        > ....

        > <label>

        > <em>Description< /em><%= text_field 'object','descripti on' %>

        > <%= error_message_ on 'onject', 'description' %>

        > </label>

        > .....

        >

        > di controllernya

        > ===========

        > bikin konstanta

        > SUCCESS = "Your changes have been saved.".freeze

        > ERROR = "Please check below for any highlighted mistakes..." .freeze

        >

        > def create

        > .....

        > if @...

        > flash[:notice] = SUCCESS

        > redirect_to :action => 'list'

        > else

        > flash[:notice] = ERROR

        > render :action => 'new'

        > end

        > ......

        > end

        >

        >

        > kurang lebih nya gitu .... :)

        >

        > thanks,

        > Dhendy Ferdian

        >

        > Aditya Agustyana <aditya_jamop@ ...> wrote:

        secara situs ini down

        > http://wiki. rubyonrails. org/rails/ pages/Custom+ Error+Message, daku

        > cukup kesulitan gmn caranya bikin custome error messages buat active

        > -record (misale translate pesan itu ke bhs indonesia)

        >

        > terutama yang kata2 ini 1 errors prohibited this user from being saved

        >

        > bisa aja sih method <%= error_messages_ for %> di gsub, tapi aku

        > ngerasa itu cara "kotor", lagian kan error yg muncul bisa lebih

        dari satu

        >

        > sohibs, ada yg tau gmn ngakali hal ini ?

        >

        > makasih sebelumnya

        >

        >

        >

        >

        >

        >

        > ------------ --------- --------- ---

        > Take the Internet to Go: Yahoo!Go puts the Internet in your pocket:

        mail, news, photos & more.

        >

        > [Non-text portions of this message have been removed]

        >

        oalah kata2 "being saved-nya" diakali pake flash yak (xixixi kagak

        kepikiran) ..., hmm ide bagus nih... tak coba ah














        <!--

        #ygrp-mkp{
        border:1px solid #d8d8d8;font-family:Arial;margin:14px 0px;padding:0px 14px;}
        #ygrp-mkp hr{
        border:1px solid #d8d8d8;}
        #ygrp-mkp #hd{
        color:#628c2a;font-size:85%;font-weight:bold;line-height:122%;margin:10px 0px;}
        #ygrp-mkp #ads{
        margin-bottom:10px;}
        #ygrp-mkp .ad{
        padding:0 0;}
        #ygrp-mkp .ad a{
        color:#0000ff;text-decoration:none;}
        -->



        <!--

        #ygrp-sponsor #ygrp-lc{
        font-family:Arial;}
        #ygrp-sponsor #ygrp-lc #hd{
        margin:10px 0px;font-weight:bold;font-size:78%;line-height:122%;}
        #ygrp-sponsor #ygrp-lc .ad{
        margin-bottom:10px;padding:0 0;}
        -->



        <!--

        #ygrp-mlmsg {font-size:13px;font-family:arial, helvetica, clean, sans-serif;}
        #ygrp-mlmsg table {font-size:inherit;font:100%;}
        #ygrp-mlmsg select, input, textarea {font:99% arial, helvetica, clean, sans-serif;}
        #ygrp-mlmsg pre, code {font:115% monospace;}
        #ygrp-mlmsg * {line-height:1.22em;}
        #ygrp-text{
        font-family:Georgia;
        }
        #ygrp-text p{
        margin:0 0 1em 0;}
        #ygrp-tpmsgs{
        font-family:Arial;
        clear:both;}
        #ygrp-vitnav{
        padding-top:10px;font-family:Verdana;font-size:77%;margin:0;}
        #ygrp-vitnav a{
        padding:0 1px;}
        #ygrp-actbar{
        clear:both;margin:25px 0;white-space:nowrap;color:#666;text-align:right;}
        #ygrp-actbar .left{
        float:left;white-space:nowrap;}
        .bld{font-weight:bold;}
        #ygrp-grft{
        font-family:Verdana;font-size:77%;padding:15px 0;}
        #ygrp-ft{
        font-family:verdana;font-size:77%;border-top:1px solid #666;
        padding:5px 0;
        }
        #ygrp-mlmsg #logo{
        padding-bottom:10px;}

        #ygrp-vital{
        background-color:#e0ecee;margin-bottom:20px;padding:2px 0 8px 8px;}
        #ygrp-vital #vithd{
        font-size:77%;font-family:Verdana;font-weight:bold;color:#333;text-transform:uppercase;}
        #ygrp-vital ul{
        padding:0;margin:2px 0;}
        #ygrp-vital ul li{
        list-style-type:none;clear:both;border:1px solid #e0ecee;
        }
        #ygrp-vital ul li .ct{
        font-weight:bold;color:#ff7900;float:right;width:2em;text-align:right;padding-right:.5em;}
        #ygrp-vital ul li .cat{
        font-weight:bold;}
        #ygrp-vital a{
        text-decoration:none;}

        #ygrp-vital a:hover{
        text-decoration:underline;}

        #ygrp-sponsor #hd{
        color:#999;font-size:77%;}
        #ygrp-sponsor #ov{
        padding:6px 13px;background-color:#e0ecee;margin-bottom:20px;}
        #ygrp-sponsor #ov ul{
        padding:0 0 0 8px;margin:0;}
        #ygrp-sponsor #ov li{
        list-style-type:square;padding:6px 0;font-size:77%;}
        #ygrp-sponsor #ov li a{
        text-decoration:none;font-size:130%;}
        #ygrp-sponsor #nc{
        background-color:#eee;margin-bottom:20px;padding:0 8px;}
        #ygrp-sponsor .ad{
        padding:8px 0;}
        #ygrp-sponsor .ad #hd1{
        font-family:Arial;font-weight:bold;color:#628c2a;font-size:100%;line-height:122%;}
        #ygrp-sponsor .ad a{
        text-decoration:none;}
        #ygrp-sponsor .ad a:hover{
        text-decoration:underline;}
        #ygrp-sponsor .ad p{
        margin:0;}
        o{font-size:0;}
        .MsoNormal{
        margin:0 0 0 0;}
        #ygrp-text tt{
        font-size:120%;}
        blockquote{margin:0 0 0 4px;}
        .replbq{margin:4;}
        -->








        ____________________________________________________________________________________
        Park yourself in front of a world of choices in alternative vehicles. Visit the Yahoo! Auto Green Center.
        http://autos.yahoo.com/green_center/

        [Non-text portions of this message have been removed]
      • Arie Kusuma Atmaja
        ... OK, bagus, jujur saya merasa ada yg kaku di konstanta di controller dhendy. Kalau saya merasa lebih fleksibel dengan cara: if @obyek.save rea_list
        Message 3 of 8 , Sep 4, 2007
          dhendy ferdian wrote:

          > di controllernya bikin konstanta
          > SUCCESS = "Your changes have been saved.".freeze
          > ERROR = "Please check below for any highlighted mistakes...".freeze
          >
          > def create
          > .....
          > if @...
          > flash[:notice] = SUCCESS
          > redirect_to :action => 'list'
          > else
          > flash[:notice] = ERROR
          > render :action => 'new'
          > end
          > ......
          > end

          OK, bagus, jujur saya "merasa" ada yg kaku di konstanta di controller dhendy.
          Kalau saya "merasa" lebih fleksibel dengan cara:

          if @...
          rea_list 'Pesan kowe keno notis ndes'
          else
          ren_new 'Kowe keno error le'
          end

          protected

          def rea_list(msg = nil)
          flash[:notice] = msg unless msg.nil?
          redirect_to :action => 'list'
          end

          def ren_new(msg = nil)
          flash[:error] = msg unless msg.nil?
          render :action => 'new'
          end

          hayo adit, gw racuni refactor lo, masi bisa direfactor lagi tuh dit ... nanti lo
          jadiin plugin ya. (yg reply gw satunya, kalo lebih dari 3 biji). gw tunggu reply
          dengan URL svnnya, kalo buat adit gw mau ikutan bantuin coding rails plugin.

          # ngelirik jedi andry.. kaburr silau pedangnya dia.

          > kurang lebih nya gitu .... :)

          ya, sama-sama. mau nyontek dhendy ah ngomong ke adit, kurang lebihnya gitu dit..

          -_-

          --
          $ ruby-19 -e "puts ({name:'arie', blog:'http://ariekusumaatmaja.wordpress.com',
          community:%w(http://groups.yahoo.com/groups/id-ruby
          http://www.linkedin.com/in/ariekeren)}).is_a?(Hash).to_s.concat(' erl ghc z')"
          true erl ghc z
        • Arie Kusuma Atmaja
          ... Ya, itu karena flash adalah instance_of?(Hash). Jadi sebetulnya adit bisa aja bikin kustomisasi *sederhana* error di view dgn cara: %w(error message
          Message 4 of 8 , Sep 4, 2007
            Aditya Agustyana wrote:

            > oalah kata2 "being saved-nya" diakali pake flash yak (xixixi kagak
            > kepikiran) ..., hmm ide bagus nih... tak coba ah

            Ya, itu karena flash adalah instance_of?(Hash).
            Jadi sebetulnya adit bisa aja bikin kustomisasi *sederhana* error di view dgn cara:

            %w(error message notice).each do |msg|
            = content_tag("div", flash[msg], :class => msg) if flash[msg]
            end

            Nah, yg gw lihat lo biasanya suka sama refactor tuh dit, coba sekarang lo pikirkan
            gimana kalo lo pengen lebih dari 3 biji flash dengan segala kosmetiknya. sebaiknya
            apakah ditaroh di application layout atau di lain (flat file?, lib berupa Mixin?,
            database?) ?

            Silakan jelaskan dst (adit baca: dan saya teruskan).

            --
            $ ruby-19 -e "puts ({name:'arie', blog:'http://ariekusumaatmaja.wordpress.com',
            community:%w(http://groups.yahoo.com/groups/id-ruby
            http://www.linkedin.com/in/ariekeren)}).is_a?(Hash).to_s.concat(' erl ghc z')"
            true erl ghc z
          • Arie Kusuma Atmaja
            ... maap abang andry, gw pengen belajar nulis yg bagus dgn menerapkan prinsip so-what jadi mo minta ijin gw tambahin yak bang -_- ... trik meng-override
            Message 5 of 8 , Sep 5, 2007
              Andry S Huzain wrote:

              >> validates_presence_of :description, :message => "tidak boleh kosong"

              maap abang andry, gw pengen belajar nulis yg bagus dgn menerapkan prinsip
              "so-what" jadi mo minta ijin gw tambahin yak bang -_-

              > ini bisa kita potong kompas meng-override default error messages.
              > Taruh saja line ini di environment.rb:
              > ActiveRecord::Errors.default_error_messages[:empty] = "nggak boleh kosong"

              trik meng-override pesan error default ini berguna apabila railers tidak ingin
              selalu menambahkan opsi :message => 'nggak boleh kosong' di *setiap model* yang
              ingin diatur agar memiliki field yang saat divalidasi harus sudah diisi.

              > Nama2 token error bisa dicek di ../lib/active_record/validations.rb

              atau bisa diintip dari script/console:

              id-ruby:~/sukebe/aho arie$ script/console
              Loading development environment.
              irb(main):001:0> require 'pp'
              => ["PP"]
              irb(main):002:0> pp ActiveRecord::Errors.default_error_messages
              {:blank=>"can't be blank",
              :inclusion=>"is not included in the list",
              :too_long=>"is too long (maximum is %d characters)",
              :empty=>"can't be empty",
              :exclusion=>"is reserved",
              :too_short=>"is too short (minimum is %d characters)",
              :invalid=>"is invalid",
              :wrong_length=>"is the wrong length (should be %d characters)",
              :confirmation=>"doesn't match confirmation",
              :taken=>"has already been taken",
              :accepted=>"must be accepted",
              :not_a_number=>"is not a number"}
              => nil
              irb(main):003:0>

              jadi begitu ceritanya, Hash default_error_messages punya key dan value seperti
              yang sudah saya copy paste diatas.

              nyuwun sewu...

              --
              $ ruby-19 -e "puts ({name:'arie', blog:'http://ariekusumaatmaja.wordpress.com',
              community:%w(http://groups.yahoo.com/groups/id-ruby
              http://www.linkedin.com/in/ariekeren)}).is_a?(Hash).to_s.concat(' erl ghc z')"
              true erl ghc z
            Your message has been successfully submitted and would be delivered to recipients shortly.