我知道有很多人问同样的问题,但我就是找不到解决办法。
当我试图编辑联系人时发生此错误。这意味着我需要查询当前联系人的数据库。
我的编辑方法如下
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
日志!(这是单击“编辑”按钮时运行的内容)
最佳答案
您不需要传递url
Rails将确定路径是否用于创建或更新记录。
对于_form
和new
操作,必须使用相同的edit
。
<%= form_for @contact do |f| %>
关于ruby-on-rails - 没有路由匹配{:action =>“show”,:controller =>“contacts”,:id => nil}缺少必需的键:[:id],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45082534/