【问题标题】:Strange AbstractController::ActionNotFound Error with update method in RailsRails 中的更新方法出现奇怪的 AbstractController::ActionNotFound 错误
【发布时间】: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


【解决方案1】:

我搬家了

资源:家庭

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

不要不明白为什么会这样。

【讨论】:

  • 嗯,我尝试了同样的事情,现在它正在工作。不知道出了什么问题。
【解决方案2】:

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

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

【讨论】:

  • 但这是 mongoid 默认值。有没有办法让 mongoid 制作非字母数字的 ID?
  • 那么每次使用 mongoid 都会发生这种情况吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-28
  • 1970-01-01
  • 2014-08-19
  • 2016-07-17
  • 2017-05-21
  • 2015-02-16
  • 1970-01-01
相关资源
最近更新 更多