HELP: "No route matches {: action =>" show ",: controller =>" orders ",: listing_id => #"

I keep getting this error when i want to enter the index page , the weird thing is that when i enter to the new order page it works fine and i been scratching my head with this error for a few days any answer?. In the routes i have listings do routes .

This is my Orders Controller:

before_action :set_order, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!

# GET /orders
# GET /orders.json
def index
@orders = Order.all
end

# GET /orders/1
# GET /orders/1.json
def show
end

# GET /orders/new
def new
@order = Order.new
@listing = Listing.find(params[:listing_id])
end

# GET /orders/1/edit
def edit
end

# POST /orders
# POST /orders.json
def create
@order = Order.new(order_params)
@listing = Listing.find(params[:listing_id])
@seller = @listing.user

@order.listing_id = @listing.id
@order.buyer_id = current_user.id
@order.seller_id = @seller.id

respond_to do |format|
if @order.save
format.html { redirect_to root_url, notice: 'Pedido creado' }
format.json { render :show, status: :created, location: @order }
else
format.html { render :new }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end

# PATCH/PUT /orders/1
# PATCH/PUT /orders/1.json
def update
respond_to do |format|
if @order.update(order_params)
format.html { redirect_to @order, notice: 'El pedido fue actualizado' }
format.json { render :show, status: :ok, location: @order }
else
format.html { render :edit }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end

# DELETE /orders/1
# DELETE /orders/1.json
def destroy
@order.destroy
respond_to do |format|
format.html { redirect_to orders_url, notice: 'El pedido fue eliminado con exito' }
format.json { head :no_content }
end
end

private
# Use callbacks to share common setup or constraints between actions.
def set_order
@order = Order.find(params[:id])
end

# Only allow a list of trusted parameters through.
def order_params
params.require(:order).permit(:address, :city, :state)
end
end

My Index Page:

<h1>Orders</h1>

<table>
<thead>
<tr>
<th>Address</th>
<th>City</th>
<th>State</th>
<th colspan="3"></th>
</tr>
</thead>

<tbody>
<% @orders.each do |order| %>
<tr>
<td><%= order.address %></td>
<td><%= order.city %></td>
<td><%= order.state %></td>
<td><%= link_to 'Mostrar', order %></td>
<td><%= link_to 'Editar', edit_listing_order_path(order) %></td>
<td><%= link_to 'Eliminar', order, method: :delete, data: { confirm: 'Estas seguro?' } %></td>
</tr>
<% end %>
</tbody>
</table>

<br>

<%= link_to 'New Order', new_listing_order_path %>

Form:

<% if order.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(order.errors.count, "error") %> prohibited this order from being saved:</h2>

<ul>
<% order.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>

<div class="field">
<%= form.label :address %>
<%= form.text_field :address %>
</div>

<div class="field">
<%= form.label :city %>
<%= form.text_field :city %>
</div>

<div class="field">
<%= form.label :state %>
<%= form.text_field :state %>
</div>

<div class="actions">
<%= form.submit %>
</div>
<% end %>'''

ADDITIONAL INFO:



  Routes.rb:

 Rails.application.routes.draw do
  
  devise_for :users
  resources :listings do
  	resources :orders
  		
end
  	
  get 'pages/about'
  get 'pages/contact'
  get 'seller' => "listings#seller"

  root 'listings#index'
  
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end



 Rake routes:

                   Prefix Verb   URI Pattern                                                                              Controller#Action
                     new_user_session GET    /users/sign_in(.:format)                                                                 devise/sessions#new
                         user_session POST   /users/sign_in(.:format)                                                                 devise/sessions#create
                 destroy_user_session DELETE /users/sign_out(.:format)                                                                devise/sessions#destroy
                    new_user_password GET    /users/password/new(.:format)                                                            devise/passwords#new
                   edit_user_password GET    /users/password/edit(.:format)                                                           devise/passwords#edit
                        user_password PATCH  /users/password(.:format)                                                                devise/passwords#update
                                      PUT    /users/password(.:format)                                                                devise/passwords#update
                                      POST   /users/password(.:format)                                                                devise/passwords#create
             cancel_user_registration GET    /users/cancel(.:format)                                                                  devise/registrations#cancel
                new_user_registration GET    /users/sign_up(.:format)                                                                 devise/registrations#new
               edit_user_registration GET    /users/edit(.:format)                                                                    devise/registrations#edit
                    user_registration PATCH  /users(.:format)                                                                         devise/registrations#update
                                      PUT    /users(.:format)                                                                         devise/registrations#update
                                      DELETE /users(.:format)                                                                         devise/registrations#destroy
                                      POST   /users(.:format)                                                                         devise/registrations#create
                       listing_orders GET    /listings/:listing_id/orders(.:format)                                                   orders#index
                                      POST   /listings/:listing_id/orders(.:format)                                                   orders#create
                    new_listing_order GET    /listings/:listing_id/orders/new(.:format)                                               orders#new
                   edit_listing_order GET    /listings/:listing_id/orders/:id/edit(.:format)                                          orders#edit
                        listing_order GET    /listings/:listing_id/orders/:id(.:format)                                               orders#show
                                      PATCH  /listings/:listing_id/orders/:id(.:format)                                               orders#update
                                      PUT    /listings/:listing_id/orders/:id(.:format)                                               orders#update
                                      DELETE /listings/:listing_id/orders/:id(.:format)                                               orders#destroy
                             listings GET    /listings(.:format)                                                                      listings#index
                                      POST   /listings(.:format)                                                                      listings#create
                          new_listing GET    /listings/new(.:format)                                                                  listings#new
                         edit_listing GET    /listings/:id/edit(.:format)                                                             listings#edit
                              listing GET    /listings/:id(.:format)                                                                  listings#show
                                      PATCH  /listings/:id(.:format)                                                                  listings#update
                                      PUT    /listings/:id(.:format)                                                                  listings#update
                                      DELETE /listings/:id(.:format)                                                                  listings#destroy
                          pages_about GET    /pages/about(.:format)                                                                   pages#about
                        pages_contact GET    /pages/contact(.:format)                                                                 pages#contact
                               seller GET    /seller(.:format)                                                                        listings#seller
                                 root GET    /                                                                                        listings#index
        rails_postmark_inbound_emails POST   /rails/action_mailbox/postmark/inbound_emails(.:format)                                  action_mailbox/ingresses/postmark/inbound_emails#create
           rails_relay_inbound_emails POST   /rails/action_mailbox/relay/inbound_emails(.:format)                                     action_mailbox/ingresses/relay/inbound_emails#create
        rails_sendgrid_inbound_emails POST   /rails/action_mailbox/sendgrid/inbound_emails(.:format)                                  action_mailbox/ingresses/sendgrid/inbound_emails#create
  rails_mandrill_inbound_health_check GET    /rails/action_mailbox/mandrill/inbound_emails(.:format)                                  action_mailbox/ingresses/mandrill/inbound_emails#health_check
        rails_mandrill_inbound_emails POST   /rails/action_mailbox/mandrill/inbound_emails(.:format)                                  action_mailbox/ingresses/mandrill/inbound_emails#create
         rails_mailgun_inbound_emails POST   /rails/action_mailbox/mailgun/inbound_emails/mime(.:format)                              action_mailbox/ingresses/mailgun/inbound_emails#create
       rails_conductor_inbound_emails GET    /rails/conductor/action_mailbox/inbound_emails(.:format)                                 rails/conductor/action_mailbox/inbound_emails#index
                                      POST   /rails/conductor/action_mailbox/inbound_emails(.:format)                                 rails/conductor/action_mailbox/inbound_emails#create
    new_rails_conductor_inbound_email GET    /rails/conductor/action_mailbox/inbound_emails/new(.:format)                             rails/conductor/action_mailbox/inbound_emails#new
   edit_rails_conductor_inbound_email GET    /rails/conductor/action_mailbox/inbound_emails/:id/edit(.:format)                        rails/conductor/action_mailbox/inbound_emails#edit
        rails_conductor_inbound_email GET    /rails/conductor/action_mailbox/inbound_emails/:id(.:format)                             rails/conductor/action_mailbox/inbound_emails#show
                                      PATCH  /rails/conductor/action_mailbox/inbound_emails/:id(.:format)                             rails/conductor/action_mailbox/inbound_emails#update
                                      PUT    /rails/conductor/action_mailbox/inbound_emails/:id(.:format)                             rails/conductor/action_mailbox/inbound_emails#update
                                      DELETE /rails/conductor/action_mailbox/inbound_emails/:id(.:format)                             rails/conductor/action_mailbox/inbound_emails#destroy
rails_conductor_inbound_email_reroute POST   /rails/conductor/action_mailbox/:inbound_email_id/reroute(.:format)                      rails/conductor/action_mailbox/reroutes#create
                   rails_service_blob GET    /rails/active_storage/blobs/:signed_id/*filename(.:format)                               active_storage/blobs#show
            rails_blob_representation GET    /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show
                   rails_disk_service GET    /rails/active_storage/disk/:encoded_key/*filename(.:format)                              active_storage/disk#show
            update_rails_disk_service PUT    /rails/active_storage/disk/:encoded_token(.:format)                                      active_storage/disk#update
                 rails_direct_uploads POST   /rails/active_storage/direct_uploads(.:format)  

Could you paste your routes? Than we can see why there is no match.

Routes:

Prefix Verb   URI Pattern                                                                              Controller#Action
                     new_user_session GET    /users/sign_in(.:format)                                                                 devise/sessions#new
                         user_session POST   /users/sign_in(.:format)                                                                 devise/sessions#create
                 destroy_user_session DELETE /users/sign_out(.:format)                                                                devise/sessions#destroy
                    new_user_password GET    /users/password/new(.:format)                                                            devise/passwords#new
                   edit_user_password GET    /users/password/edit(.:format)                                                           devise/passwords#edit
                        user_password PATCH  /users/password(.:format)                                                                devise/passwords#update
                                      PUT    /users/password(.:format)                                                                devise/passwords#update
                                      POST   /users/password(.:format)                                                                devise/passwords#create
             cancel_user_registration GET    /users/cancel(.:format)                                                                  devise/registrations#cancel
                new_user_registration GET    /users/sign_up(.:format)                                                                 devise/registrations#new
               edit_user_registration GET    /users/edit(.:format)                                                                    devise/registrations#edit
                    user_registration PATCH  /users(.:format)                                                                         devise/registrations#update
                                      PUT    /users(.:format)                                                                         devise/registrations#update
                                      DELETE /users(.:format)                                                                         devise/registrations#destroy
                                      POST   /users(.:format)                                                                         devise/registrations#create
                       listing_orders GET    /listings/:listing_id/orders(.:format)                                                   orders#index
                                      POST   /listings/:listing_id/orders(.:format)                                                   orders#create
                    new_listing_order GET    /listings/:listing_id/orders/new(.:format)                                               orders#new
                   edit_listing_order GET    /listings/:listing_id/orders/:id/edit(.:format)                                          orders#edit
                        listing_order GET    /listings/:listing_id/orders/:id(.:format)                                               orders#show
                                      PATCH  /listings/:listing_id/orders/:id(.:format)                                               orders#update
                                      PUT    /listings/:listing_id/orders/:id(.:format)                                               orders#update
                                      DELETE /listings/:listing_id/orders/:id(.:format)                                               orders#destroy
                             listings GET    /listings(.:format)                                                                      listings#index
                                      POST   /listings(.:format)                                                                      listings#create
                          new_listing GET    /listings/new(.:format)                                                                  listings#new
                         edit_listing GET    /listings/:id/edit(.:format)                                                             listings#edit
                              listing GET    /listings/:id(.:format)                                                                  listings#show
                                      PATCH  /listings/:id(.:format)                                                                  listings#update
                                      PUT    /listings/:id(.:format)                                                                  listings#update
                                      DELETE /listings/:id(.:format)                                                                  listings#destroy
                          pages_about GET    /pages/about(.:format)                                                                   pages#about
                        pages_contact GET    /pages/contact(.:format)                                                                 pages#contact
                               seller GET    /seller(.:format)                                                                        listings#seller
                                 root GET    /                                                                                        listings#index
        rails_postmark_inbound_emails POST   /rails/action_mailbox/postmark/inbound_emails(.:format)                                  action_mailbox/ingresses/postmark/inbound_emails#create
           rails_relay_inbound_emails POST   /rails/action_mailbox/relay/inbound_emails(.:format)                                     action_mailbox/ingresses/relay/inbound_emails#create
        rails_sendgrid_inbound_emails POST   /rails/action_mailbox/sendgrid/inbound_emails(.:format)                                  action_mailbox/ingresses/sendgrid/inbound_emails#create
  rails_mandrill_inbound_health_check GET    /rails/action_mailbox/mandrill/inbound_emails(.:format)                                  action_mailbox/ingresses/mandrill/inbound_emails#health_check
        rails_mandrill_inbound_emails POST   /rails/action_mailbox/mandrill/inbound_emails(.:format)                                  action_mailbox/ingresses/mandrill/inbound_emails#create
         rails_mailgun_inbound_emails POST   /rails/action_mailbox/mailgun/inbound_emails/mime(.:format)                              action_mailbox/ingresses/mailgun/inbound_emails#create
       rails_conductor_inbound_emails GET    /rails/conductor/action_mailbox/inbound_emails(.:format)                                 rails/conductor/action_mailbox/inbound_emails#index
                                      POST   /rails/conductor/action_mailbox/inbound_emails(.:format)                                 rails/conductor/action_mailbox/inbound_emails#create
    new_rails_conductor_inbound_email GET    /rails/conductor/action_mailbox/inbound_emails/new(.:format)                             rails/conductor/action_mailbox/inbound_emails#new
   edit_rails_conductor_inbound_email GET    /rails/conductor/action_mailbox/inbound_emails/:id/edit(.:format)                        rails/conductor/action_mailbox/inbound_emails#edit
        rails_conductor_inbound_email GET    /rails/conductor/action_mailbox/inbound_emails/:id(.:format)                             rails/conductor/action_mailbox/inbound_emails#show
                                      PATCH  /rails/conductor/action_mailbox/inbound_emails/:id(.:format)                             rails/conductor/action_mailbox/inbound_emails#update
                                      PUT    /rails/conductor/action_mailbox/inbound_emails/:id(.:format)                             rails/conductor/action_mailbox/inbound_emails#update
                                      DELETE /rails/conductor/action_mailbox/inbound_emails/:id(.:format)                             rails/conductor/action_mailbox/inbound_emails#destroy
rails_conductor_inbound_email_reroute POST   /rails/conductor/action_mailbox/:inbound_email_id/reroute(.:format)                      rails/conductor/action_mailbox/reroutes#create
                   rails_service_blob GET    /rails/active_storage/blobs/:signed_id/*filename(.:format)                               active_storage/blobs#show
            rails_blob_representation GET    /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show
                   rails_disk_service GET    /rails/active_storage/disk/:encoded_key/*filename(.:format)                              active_storage/disk#show
            update_rails_disk_service PUT    /rails/active_storage/disk/:encoded_token(.:format)                                      active_storage/disk#update
                 rails_direct_uploads POST   /rails/active_storage/direct_uploads(.:format)                                   

Hey Ivan,

Looks like that path has two parameters (:listing_id, and :id), but the call to the url helper methods is only providing one.

I think what is expected when calling this path is edit_listing_order_path(listing, order)

I did that but the error keeps popping . Maybe its because the nested resources

The error is about a “show” not an “edit” so the edit_listing_order_path call isn’t the problem here (since that action is an edit)

Did you try the path I provided literally? I’m not sure that listing is defined on that page. I just want to make sure that you’ve confirmed that you’re passing two non-nil values to the path method. This error very commonly happens when one of the id parameters for a path is nil.

If they are associated you may need to call order.listing or something like that to get your listing object. For example something like: edit_listing_order_path(order.listing, order)

1 Like

It worked!!! Thank you so much for bring me a solution