我知道有很多人问同样的问题,但我找不到解决办法。
当我尝试编辑联系人时,会发生此错误。这意味着我需要在DB中查询当前联系人。
我的编辑方法如下所示
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
日志! (这是单击编辑按钮时运行的内容)
答案 0 :(得分:0)
您发布的错误是路由到show
操作,而不是edit
操作。
您可能需要更改edit
操作的链接,并且您需要在编辑联系人链接中传递联系人ID,如下所示(假设您需要联系@contact
变量):
<%= link_to 'Edit contact', edit_contact_path(@contact.id) %>
答案 1 :(得分:0)
您不需要传递url
Rails将确定路径是否用于创建或更新记录。
您必须对_form
和new
行为使用相同的edit
。
<%= form_for @contact do |f| %>