2017-04-20 137 views
0

我知道问题被问及次数,我也有错误,但无法修复它。没有路线匹配{:action =>“show”,:guide_id =>#,:id => nil}缺少必需的键:[:id]

我得到以下错误,如果我尝试编辑我的记录:

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] 

我的新动作是:

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

我的编辑操作是:

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

指数从我点击编辑链接:

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

我的方法是,我觉得引导用户:

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

航线有:

  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 

我的形式,为新编辑:

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

我的所有路线是:

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

新作品完美并创建记录,但我无法使用新形式编辑我的表单。

+0

在您的编辑链接中,“@ guide”和“guide_package”的值是什么? – mmichael

+0

@mmichael它的'/ guide/muhammad-hassan/packages/1/edit' so @guide:'muhammad-hassan'和guide_package:'1'。我从方法名称中找到'muhammad-hassan':'@guide = User.friendly.find(params [:guide_id])''。我的路线可以吗?我的意思是form_for的嵌套路线? – LearningROR

回答

0

我遇到了一些类似的问题。我的解决方案是:

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

我希望它可以帮助你。

+0

仍然是一样的错误。上面提到的错误来了:'<%= form_for [:guide,@guide_package],:multipart => true do | f | %>' – LearningROR

0

试试这个。

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

它说:未定义的方法'user_guide_package_path'为#<#:0x007fdde89613b0> – LearningROR

+0

即使在编辑方法:'@guide_package = @ guide.guide_packages.new'呈现新表单,但如果我做了:'@guide_package = @ guide.guide_packages.where(id:params [:id])。首先,编辑时会出现同样的错误,并且有问题。 – LearningROR

相关问题