在Contact App错误中编辑联系人

时间:2012-04-29 18:54:46

标签: ruby-on-rails ruby-on-rails-3 object

我一直收到错误

Couldnt find <object> without an ID

我要做的就是让我的用户更新他们的联系人信息。

目前我在控制器中对编辑和更新的定义是:

def edit
 @contact = current_user.contacts.find(params[:id])
end

def update
 @contact = current_user.contacts.find(params[:id])

 if @contact.update_attributes(params[:contact])
   redirect_to @contact
 else
   render action: "edit" 
end 
end

在我看来,有一个表单调用对象@contact as

<%= form_for (@contact) do |f| %>
<div class = "name-field">
    <%= f.label :name, f.text_field :name %>
</div>

<div class = "company-field">
    <%= f.label :company, f.text_field :company %>
</div>

<div class = "email-field">
    <%= f.label :email, f.text_field :email %>
</div>

<div class = "phone-field">
    <%= f.label :phone, f.text_field :phone %>
</div>

<div class = "mobile-field">
    <%= f.label :mobile, f.text_field :mobile %>
</div>  

<div class="actions"><%= f.submit "Update" %></div>
<% end %>

如果我能解决这个错误,我会很高兴获得任何建议:)感谢Tom

1 个答案:

答案 0 :(得分:0)

您可以尝试使用.where代替find吗? find如果找不到指定的Exception,则会id。或者,您可以使用find_by_id,如果找不到您指定的id的对象,则会返回nil。

编辑:

  • where会为您提供一个大小为1的数组,如果您只是给它1 id,或者如果找不到它则为空数组

  • find_by_id会为您提供指定ID的对象,如果您无法找到该对象,则为nil