2017-04-20 5 views
0

Ich weiß, dass die Frage oft gestellt wird und ich habe auch die gleiche Fehler aber konnte es nicht beheben.Keine Route stimmt überein {: action => "show",: guide_id => #,: id => nil} fehlt erforderliche Schlüssel: [: id]

ich unten Störung erhalte, wenn ich versuche, meinen Rekord zu bearbeiten:

No route matches {:action=>"show", :controller=>"guide/packages", :guide_id=># 
<GuidePackage id: 1, user_id: 3, title: "Paris to london", city: nil, 
price_per_adult: 2.44, price_per_children: 7.88, description: "XXXXXXXXXXXXX", 
created_at: "2017-04-20 20:01:58", updated_at: "2017-04-20 20:01:58">, 
:id=>nil} missing required keys: [:id] 

Meine neue Aktion:

def new 
    @guide_package = @guide.guide_packages.new 
    end 

Meine bearbeiten Aktion ist:

def edit 
    @guide_package = GuidePackage.find(params[:id]) 
    end 

Der Index von wo ich klicke bearbeiten Link:

<%= link_to "Edit", edit_guide_guide_package_path(@guide, guide_package), title: "Edit" %> 

Meine Methode ist, die ich führen den Benutzer zu finden:

def set_guide 
    @guide = User.friendly.find(params[:guide_id]) 
    end 

Routen sind:

  guide_guide_packages GET  /guide/:guide_id/packages(.:format)     guide/packages#index 
           POST  /guide/:guide_id/packages(.:format)     guide/packages#create 
     new_guide_guide_package GET  /guide/:guide_id/packages/new(.:format)    guide/packages#new 
     edit_guide_guide_package GET  /guide/:guide_id/packages/:id/edit(.:format)  guide/packages#edit 
      guide_guide_package GET  /guide/:guide_id/packages/:id(.:format)    guide/packages#show 
           PATCH /guide/:guide_id/packages/:id(.:format)    guide/packages#update 
           PUT  /guide/:guide_id/packages/:id(.:format)    guide/packages#update 
           DELETE /guide/:guide_id/packages/:id(.:format)    guide/packages#destroy 

Meine Form für neue und bearbeiten:

<%= form_for [:guide, @guide_package], :multipart => true do |f| %> 
<% end %> 

Meine allen Routen sind:

namespace :guide do 
    resources :guides, :path => '/' do 
     resources :packages 
    end 
    end 

Das neue funktioniert perfekt und erstellt die Datensätze, aber ich kann mein Formular nicht mit einem neuen Formular bearbeiten.

+0

In Ihrem Bearbeitungslink, was sind die Werte von '@ guide' und' guide_package'? – mmichael

+0

@mmichael seine '/ guide/muhammad-hassan/packages/1/edit' so @guide:' muhammad-hassan' und guide_package: '1'. Ich finde 'muhammad-hassan' vom Methodennamen:' @guide = User.friendly.find (params [: guide_id]) '. Sind meine Routen in Ordnung? Ich meine verschachtelte Routen für form_for? – LearningROR

Antwort

0

Ich habe ein ähnliches Problem konfrontiert. Meine Lösung war:

<%= link_to "Edit", edit_guide_guide_package_path(:guide_id => @guide.id, :id => guide_package.id), title: "Edit" %> 

Ich hoffe, es hilft Ihnen.

+0

Immer noch der gleiche Fehler. Der oben angegebene Fehler tritt auf: '<% = form_for [: guide, @guide_package],: multipart => true do | f | %> ' – LearningROR

0

Versuchen Sie dies.

<%= form_for [@guide, @guide_package], :multipart => true do |f| %> 
<% end %> 
+0

es heißt: undefinierte Methode' user_guide_package_path 'für # <# : 0x007fdde89613b0> – LearningROR

+0

Auch in Edit-Methode: '@ guide_package = @ guide.guide_packages.new' render das neue Formular, aber wenn ich das tue : '@guide_package = @ guide.guide_packages.where (id: params [: id]). first' Derselbe Fehler wird in Bearbeitung mit dem angegebenen Fehler angezeigt. – LearningROR

Verwandte Themen