Ruby on rails 没有路由匹配{:action=>;show";,:controller=>;contacts";,:id=>;nil}缺少必需的键:[:id]

Ruby on rails 没有路由匹配{:action=>;show";,:controller=>;contacts";,:id=>;nil}缺少必需的键:[:id],ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我知道有很多人问同样的问题,但我就是找不到解决办法 尝试编辑联系人时发生此错误。这意味着我需要查询数据库中的当前联系人 我的编辑方法如下所示 def edit @contact = Contact.active .select("phone_number, email, first_name, last_name, address1, address2, city, state, zipcode, country, gender, birthd

我知道有很多人问同样的问题,但我就是找不到解决办法

尝试编辑联系人时发生此错误。这意味着我需要查询数据库中的当前联系人

我的编辑方法如下所示

def edit
    @contact = Contact.active
                      .select("phone_number, email, first_name, last_name, address1, address2, city, state, zipcode, country, gender, birthday, optional1, optional2, optional3, optional4, optional5, string_agg(tags.name,',') as tags")
                      .where("contacts.organization_id = ? and contacts.id = ?", current_users_user.organization_id, params[:id])
                      .joins("INNER JOIN tag_contacts on tag_contacts.contact_id = contacts.id")
                      .joins("INNER JOIN tags on tags.id = tag_contacts.tag_id")
                      .group("contacts.id,phone_number, email, first_name, last_name, address1, address2, city, state, zipcode, country, gender, birthday, optional1, optional2, optional3, optional4, optional5")
                      .first
end
当我点击编辑按钮时,我收到这个错误

No route matches {:action=>"show", :controller=>"contacts", :id=>nil} missing required keys: [:id]
但是,当我将查询从终端窗口复制并粘贴到Postgres时,查询返回的记录正好是我需要的

这是我联络人的路线

resources :contacts, :only => %w(index new edit show update create destroy) do
  get 'import', on: :collection 
  collection {post :exec_import}
end
问我任何你可能需要的额外信息!非常感谢你

编辑

这就是我所说的

<%= form_for @contact, url: contact_path(@contact) do |f| %>

这就是我的路线

编辑2

日志!(这是单击“编辑”按钮时运行的操作)


您发布的错误路由到
show
操作,而不是
edit
操作

您可能需要将链接更改为
edit
操作,并且需要在编辑联系人链接中传递联系人ID,如下所示(假设您在
@contact
变量中需要联系人):


您发布的错误路由到
显示
操作,而不是
编辑
操作

您可能需要将链接更改为
edit
操作,并且需要在编辑联系人链接中传递联系人ID,如下所示(假设您在
@contact
变量中需要联系人):


您不需要传递
url
Rails将确定路径是否用于创建或更新记录

对于
新建
编辑
操作,必须使用相同的
表单

<%= form_for @contact do |f| %>

您不需要传递
url
Rails将确定路径是否用于创建或更新记录

对于
新建
编辑
操作,必须使用相同的
表单

<%= form_for @contact do |f| %>


编辑链接有问题,请发布代码进行编辑link@DeepakMahakale我添加了我的路线和编辑链接编辑链接有问题,请发布代码进行编辑link@DeepakMahakale我添加了我的路线和编辑链接。我所有的其他编辑都是这样做的,它们都可以工作。。我不知道为什么它不起作用。您的方法也给了我错误。从您的日志中,我认为
@contact
变量的值是
nil
。通过在控制台中将
p@contact
作为
p@contact
打印,检查
@contact
操作中的
@contact
变量中存在的值。我的所有其他编辑都是以这种方式完成的,并且都有效。。我不知道为什么它不起作用。您的方法也给了我错误。从您的日志中,我认为
@contact
变量的值是
nil
。通过在控制台中将
p@contact
打印为
p@contact
来检查
@contact
操作中的
@contact
变量中存在的值。我收到一个不同的错误
表单中的第一个参数不能包含nil或为空
您应该将其设置为
@contact=contact.new
在新操作和
@contact=contact.find(参数[:id])
在编辑操作中,您可以发布日志吗?如果是其他原因导致了问题,请发布日志。我得到一个不同的错误
表单中的第一个参数不能包含nil或为空
您应该将其设置为
@contact=contact.new
在新操作中和
@contact=contact.find(参数[:id])
在编辑操作中,您是否可以将日志也张贴出来,好像是其他原因导致了问题