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

[ASK] routes nested resources

Expand Messages
  • spondbob
    Salam kenal semua, baru gabung langsung mau tanya :D class User has_many :tickets, :class_name = Ticket has_many :histories, :class_name = History end
    Message 1 of 3 , Jan 2, 2014
    • 0 Attachment

      Salam kenal semua, baru gabung langsung mau tanya :D


      class User

        has_many :tickets, :class_name => 'Ticket'

        has_many :histories, :class_name => 'History'

      end


      class Ticket

        belongs_to :user, :class_name => 'User'

      end


      class History

        belongs_to :user, :class_name => 'User'

      end


      resources :users do

        resources :tickets, :histories

      end


      Pertanyaan pertama, misal untuk url /users/:user_id/tickets, bagaimana cara untuk mendapatkan main resource nya? yaitu users. ini akan saya gunakan di application_controller.rb untuk menentukan layout dari resource yang ada dibawah users agar menggunakan layout yang sama


      misal layout yang akan saya gunakan adalah "dashboard" terdapat sidebar menu yang mengarah ke:

      - link_to "Edit", edit_user_path(@user)

      - link_to "Ticket", user_tickets_path(@user)

      - link_to "History", user_histories_path(@user)


      Ketika dari menu Edit saya berpindah ke Ticket terdapat error pada link_to "Edit", edit_user_path(@user)


      No route matches {:action=>"edit", :controller=>"users", :locale=>:id, :user_id=>"52c2cb0973706f69b8050000", :id=>nil, :format=>nil} missing required keys: [:id]


      Dari pesan error, sebenernya :user_id adalah :id yang dibutuhkan, bagaimana untuk mengatasi ini?


      Sory kalo pertanyaannya kurang jelas, cari blockquote buat code kok juga gak ada

    • Aji
      boleh tau rake routes nya gimana? sama user_id assign-nya darimana ya? apakah dari manual atau dari rails ya?
      Message 2 of 3 , Jan 3, 2014
      • 0 Attachment
        boleh tau rake routes nya gimana? sama user_id assign-nya darimana ya? apakah dari manual atau dari rails ya?




        On Thu, Jan 2, 2014 at 7:01 PM, <sponbob_squelpen@...> wrote:
         

        Salam kenal semua, baru gabung langsung mau tanya :D


        class User

          has_many :tickets, :class_name => 'Ticket'

          has_many :histories, :class_name => 'History'

        end


        class Ticket

          belongs_to :user, :class_name => 'User'

        end


        class History

          belongs_to :user, :class_name => 'User'

        end


        resources :users do

          resources :tickets, :histories

        end


        Pertanyaan pertama, misal untuk url /users/:user_id/tickets, bagaimana cara untuk mendapatkan main resource nya? yaitu users. ini akan saya gunakan di application_controller.rb untuk menentukan layout dari resource yang ada dibawah users agar menggunakan layout yang sama


        misal layout yang akan saya gunakan adalah "dashboard" terdapat sidebar menu yang mengarah ke:

        - link_to "Edit", edit_user_path(@user)

        - link_to "Ticket", user_tickets_path(@user)

        - link_to "History", user_histories_path(@user)


        Ketika dari menu Edit saya berpindah ke Ticket terdapat error pada link_to "Edit", edit_user_path(@user)


        No route matches {:action=>"edit", :controller=>"users", :locale=>:id, :user_id=>"52c2cb0973706f69b8050000", :id=>nil, :format=>nil} missing required keys: [:id]


        Dari pesan error, sebenernya :user_id adalah :id yang dibutuhkan, bagaimana untuk mengatasi ini?


        Sory kalo pertanyaannya kurang jelas, cari blockquote buat code kok juga gak ada


      • spondbob
        sory baru sempet bales, barusan ngecek grup ternyata udah ada yang reply, di tunggu tunggu di email kok gak ada :D ini hasil routesnya ``` user_tickets GET
        Message 3 of 3 , Jan 14, 2014
        • 0 Attachment

          sory baru sempet bales, barusan ngecek grup ternyata udah ada yang reply, di tunggu tunggu di email kok gak ada :D


          ini hasil routesnya

          ```

                    user_tickets GET    (/:locale)/users/:user_id/tickets(.:format)               tickets#index {:locale=>/id|en/}

                                   POST   (/:locale)/users/:user_id/tickets(.:format)               tickets#create {:locale=>/id|en/}

                 new_user_ticket GET    (/:locale)/users/:user_id/tickets/new(.:format)           tickets#new {:locale=>/id|en/}

                edit_user_ticket GET    (/:locale)/users/:user_id/tickets/:id/edit(.:format)      tickets#edit {:locale=>/id|en/}

                     user_ticket GET    (/:locale)/users/:user_id/tickets/:id(.:format)           tickets#show {:locale=>/id|en/}

                                   PATCH  (/:locale)/users/:user_id/tickets/:id(.:format)           tickets#update {:locale=>/id|en/}

                                   PUT    (/:locale)/users/:user_id/tickets/:id(.:format)           tickets#update {:locale=>/id|en/}

                                   DELETE (/:locale)/users/:user_id/tickets/:id(.:format)           tickets#destroy {:locale=>/id|en/}

               user_histories GET    (/:locale)/users/:user_id/histories(.:format)          histories#index {:locale=>/id|en/}

                                   POST   (/:locale)/users/:user_id/histories(.:format)          histories#create {:locale=>/id|en/}

             new_user_history GET    (/:locale)/users/:user_id/histories/new(.:format)      histories#new {:locale=>/id|en/}

            edit_user_history GET    (/:locale)/users/:user_id/histories/:id/edit(.:format) histories#edit {:locale=>/id|en/}

                 user_history GET    (/:locale)/users/:user_id/histories/:id(.:format)      histories#show {:locale=>/id|en/}

                                   PATCH  (/:locale)/users/:user_id/histories/:id(.:format)      histories#update {:locale=>/id|en/}

                                   PUT    (/:locale)/users/:user_id/histories/:id(.:format)      histories#update {:locale=>/id|en/}

                                   DELETE (/:locale)/users/:user_id/histories/:id(.:format)      histories#destroy {:locale=>/id|en/}

                         users GET    (/:locale)/users(.:format)                                  users#index {:locale=>/id|en/}

                                   POST   (/:locale)/users(.:format)                                  users#create {:locale=>/id|en/}

                      new_user GET    (/:locale)/users/new(.:format)                              users#new {:locale=>/id|en/}

                     edit_user GET    (/:locale)/users/:id/edit(.:format)                         users#edit {:locale=>/id|en/}

                          user GET    (/:locale)/users/:id(.:format)                              users#show {:locale=>/id|en/}

                                   PATCH  (/:locale)/users/:id(.:format)                              users#update {:locale=>/id|en/}

                                   PUT    (/:locale)/users/:id(.:format)                              users#update {:locale=>/id|en/}

                                   DELETE (/:locale)/users/:id(.:format)                              users#destroy {:locale=>/id|en/}


          ```


          user_id di assign sama railsnya.

          alur aplikasinya secara umum dari resources :users kalo di klik edit maka di arahkan ke /users/52c2cb0973706f69b8050000/edit dengan layout yang saya sebutkan diatas, jadi user_id nya udah di assign di halaman sebelumnya dari resources :users


          solusi sementara untuk pertanyaan kedua yaitu menambahkan:

          ```

          before_action :set_user


          def set_user

            @user = User.find(params[:user_id])

          end

          ```


          pada TicketsController dan HistoriesController. tapi kayaknya kurang oke karena setiap mengkases kedua controller tersebut maka akan dilakukan query ke database, apakah benar demikian? jadinya gak efisien

        Your message has been successfully submitted and would be delivered to recipients shortly.