1

我有具有以下操作 的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  

编辑.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>  

路由.rb

resources :families  

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

AbstractController::ActionNotFound at /families/5235513e1dba7f8605000004

找不到 FamiliesController 的操作“5235513e1dba7f8605000004”

(5235513e1dba7f8605000004) 是此人的 ID

这里有什么问题?

编辑

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

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

4

2 回答 2

1

我移动了

资源:家庭

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

不要不知道为什么会这样。

于 2013-09-23T08:53:30.903 回答
0

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

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

于 2013-09-16T06:57:45.820 回答