2017-05-08 2 views
-1

Ich habe eine Seite, die ich anzeigen, die nicht Index ist, zeigen, bearbeiten, etc. Die Seite, die ich will ist adoption.html.erb, aber aus irgendeinem Grund ist es die Show-Seite ID greifen. In meiner views/shared/_header.html.erb Datei habe ich <li><%= link_to "More About Dog Adoption", adoption_info_path, class: "dog-adopt-info" %></li>. Was soll hier gehen: adoption.html.erb, sondern stattdessen mit: Couldn't find Dog with 'id'=adoption. Ich bin wirklich fest und nicht sicher, warum es die ID aus der Show ergreift. Gedanken? P.S. Lassen Sie es mich wissen, wenn Sie mehr Informationen benötigen.Rails Link zu Seite nicht Routing, wo ich will

class DogsController < ApplicationController 

    def index 
    @dogs = Dog.all 
    end 

    def show 
    @dog = Dog.find(params[:id]) 
    end 

    def adoption 
    end 

end 

routes.rb

resources :dogs, only: [:index, :show] 
get "dogs/adoption", as: "adoption_info" 

app/views/shared/_header.html.erb

<a class="page-scroll" href="#about">About Dog Adoption</a> 
<ul class="about-dog-adoption"> 
    <li><%= link_to "More About Dog Adoption", adoption_info_path, class: "dog-adopt-info" %></li> 
</ul> 

Wenn ich mit auf den obigen Link, um es Fehler klicken: enter image description here

Mein rspec-Test passiert, was wie ein falsches Positiv erscheint:

context "#dogs_adoption" do 
    it "renders more info about dog adoptions" do 
    get :adoption 
    expect(response).to have_http_status(200) 
    end 
end 

Antwort

1

try unten Code:

get "dogs/adoption", as: "adoption_info" 
resources :dogs, only: [:index, :show] 

Problem: Ihre Routen "/ Hunde/Annahme" geht an Hunde-Controller mit Show als Aktion mit ID: "Annahme".

+0

Das war einfach haha. Bei den Routen kommt es auf die Reihenfolge an. Ich erinnere mich gerade daran, vor fast einem Jahr in etwas Ähnliches zu geraten. Danke, @ puneet18! – kyle

+0

@kyle akzeptiere meine Antwort, wenn es für dich funktioniert. Danke – puneet18

+0

werde ich. Ich kann nicht bis 1 Minute von jetzt an akzeptieren. – kyle