奇怪的AbstractController :: ActionNotFound错误与Rails中的更新方法

时间:2013-09-16 06:44:46

标签: ruby-on-rails action

我有 FamiliesController 这些操作:

def edit
 @family=Family.find(params[:id])
end

def update
    @family=Family.find(params[:id])
    @family.update_attributes(params[:family])
end   

家庭模型 :(使用Mongoid)

attr_accessible :location
field :location  

edit.html.erb

<div class="container">
<%= form_for @family do |f| %>
  <%= f.error_messages %>
  <p>
    <%= f.label :location %><br />
    <%= f.text_field :location %>
  </p>
<%= f.submit "Submit" %>
</div>  

rotues.rb

resources :families  

但是当我提交表格时,我得到了:

  

AbstractSertroller :: ActionNotFound位于/ families / 5235513e1dba7f8605000004

     

找不到针对FamiliesController的动作'5235513e1dba7f8605000004'

     

(5235513e1dba7f8605000004)是此人的身份证件

这里有什么问题?

编辑

所以我发现了SO,它看起来像 Rails不支持字母数字ID 此外,答案中提到的gem在mongoid中不起作用(它们仅适用于ActiveRecord模型)。那么如何为Mongoid解决这个问题呢?

这是否意味着我无法使用Rails更新方法更新Mongoid中的数据库记录?

2 个答案:

答案 0 :(得分:1)

我移动了

  

资源:家庭

routes.rb 的顶部。现在它工作正常。

不,为什么不这样。

答案 1 :(得分:0)

Rails默认情况下不支持字母数字ID,它需要一个整数。

如果您需要将ID设为字母数字,则需要进行一些更改。请查看以下资源: