Saya tidak menanyakan bagaimana routes-nya, akan tetapi bagaimana
controller-nya, yang sebenarnya sudah cukup jelas saya sebutkan:

> menangani index action untuk path yang berbeda (katakan /speeches/ dengan
> /bundles/1/speeches/ ). Mohon pencerahannya.

Dan saya sudah menemukan jawabannya yaitu:

def index
    if params[:bundle_id]
      @bundle = Bundle.find(params[:bundle_id])

      unless @bundle.nil?
        @speeches = @bundle.speeches
      else
        flash[:notice] = 'No Bundle found'
        redirect_to bundle_path
      end

    else
      @speeches = Speech.find(:all)
    end

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @speeches }
    end
  end

Sehingga kalo ada params[:bundle_id] dalam hal ini berarti menangani
/bundle/1/speeches/ maka cari bundle-nya dan lihat speeches yang dimiliki
oleh bundle itu. Jika tidak ada, maka cari @speeches dari database dan lalu
dikirim ke viewer.

Namun saya masih bermasalah menangani error saat bundle_id tidak ada dalam
database. Dari kode controller di atas, saya dapat RecordNotFound error. Ini
yang pertama.

2. Saya sudah coba find_by_id (saran dari teman) juga tidak bisa, saya dapat
Routing Error ini:

bundle_url failed to generate from {:action=>"show",
:controller=>"bundles"} - you may have ambiguous routes, or you may
need to supply additional parameters for this route.  content_url has
the following required parameters: ["bundles", :id] - are they all
satisfied?


3. Saya sudah coba tambahkan rescue ActiveRecord::RecordNotFound seperti
pada http://pastie.org/270189 saya dapat error NoMethodError untuk speech
object. Ok, saya paham, ini karena baris:

@speeches = @bundle.speeches

sementara @bundle-nya nil. Lalu saya tambahkan block unless @bundle.nil?
seperti kode di atas, kembali lagi saya dapat Routing Error. Penasaran
dengan routes.rb saya? Ini saya kasi secara lengkap:
http://pastie.org/270210 (padahal sudah sama dengan jawaban mas Arie)

Ampun d, udah coba macem2, dimana salahku? Dosa apa gw? : )

Thanks,

Dida



2008/8/28 Arie Kusuma Atmaja <[EMAIL PROTECTED]>

>   Adinda Praditya wrote:
>
> > Nah, bagaimana membedakan hal ini di SpeechController?
>
> mestinya anda yang tukang kodingnya yang menjawab *bagaimana membedakan*
> nya
>
> yg dibawah ini adalah satu solusi yg harus bundle_id ketahuan/alias bisa
> dipanggil lewat callback.
>
> > Misalnya dalam
> > menangani index action untuk path yang berbeda (katakan /speeches/ dengan
> > /bundles/1/speeches/ ). Mohon pencerahannya.
>
> saya rephrase pertanyaannya langsung dlm bentuk path saja ya.
>
> GET /bundles # BundleController#index
> GET /bundles/:bundle_id/speeches # SpeechController#index
>
> map.resources :bundles do |bundle|
> bundle.resources :speeches
> end
>
> silakan reply lagi kalau ini tidak menjawab masalah anda.
>
> http://ariekeren.blogdetik.com
> "Don't ask if you can ask, just ask!", R2D2
>


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

Kirim email ke