【发布时间】:2013-09-23 16:53:30
【问题描述】:
我有 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
但是当我提交表单时,我得到:
AbstractController::ActionNotFound at /families/5235513e1dba7f8605000004
找不到 FamiliesController 的操作“5235513e1dba7f8605000004”
(5235513e1dba7f8605000004) 是此人的 id
这里有什么问题?
编辑
所以我发现了 SO,看起来 Rails 不支持字母数字 ID 而且答案中提到的 gem 在 mongoid 中不起作用(它们仅适用于 ActiveRecord 模型)。那么如何为 Mongoid 解决这个问题呢?
这是否意味着我不能使用 Rails 更新方法来更新我在 Mongoid 中的数据库记录?
【问题讨论】:
-
我也遇到了同样的问题。希望有人帮忙!
-
什么是
5235513e1dba7f8605000004?那是id吗?怎么是字母数字的? -
@RajeshKolappakam 是的,这是我经过的人的身份。使用 mondoid。这是 Mongoid 在创建新对象(在本例中为 Family)时自动创建的 id。
-
如果您没有尝试对模型进行特殊处理,它应该可以正常工作。字母数字 id 在这里不应该有任何区别。你能把你的family.rb代码放在这里吗,如果可能的话,还有路线。我刚刚尝试了一个带有 mongoid 的演示应用程序,它按预期工作
-
使用字母数字 ID 不会导致任何问题。您的路线似乎有问题。
标签: ruby-on-rails action