2017-05-08 4 views
-1

J'ai une page que je veux afficher qui n'est pas index, afficher, modifier, etc. La page que je veux est adoption.html.erb, mais pour une raison quelconque, il saisit l'ID de la page show. Dans mon fichier views/shared/_header.html.erb, j'ai <li><%= link_to "More About Dog Adoption", adoption_info_path, class: "dog-adopt-info" %></li>. Ce qui est censé aller ici: adoption.html.erb, mais est à la place d'errer avec: Couldn't find Dog with 'id'=adoption. Je suis vraiment coincé et je ne sais pas pourquoi il saisit l'identifiant de l'émission. Pensées? P.S. Faites-moi savoir si vous avez besoin de plus d'informations.Rails lien vers la page ne pas le routage où je veux

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/vues/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> 

Lorsque je clique sur le lien ci-dessus il des erreurs avec: enter image description here

Mon test rspec passe, ce qui semble être un faux positif:

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

Répondre

1

essayer ci-dessous le code:

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

Problème: vos itinéraires "/ chiens/adoption" va au contrôleur de chiens avec show en action id: "adoption".

+0

C'était facile haha. Donc, avec les routes, l'ordre compte. Je me souviens juste d'avoir rencontré quelque chose de similaire il y a presque un an. Merci, @ puneet18! – kyle

+0

@kyle accepte ma réponse si cela fonctionne pour vous. Merci – puneet18

+0

Je le ferai. Je ne peux pas accepter jusqu'à 1 minute à partir de maintenant. – kyle