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  

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::/families/5235513e1dba7f8605000004 の ActionNotFound

FamiliesController のアクション '5235513e1dba7f8605000004' が見つかりませんでした

(5235513e1dba7f8605000004) は個人の ID です。

ここで何が問題なのですか?

編集

だから私はSOで見つけました.Railsは英数字のIDをサポートしていないようです。また、回答に記載されているgemはmongoidでは機能しません(ActiveRecordモデル専用です)。では、Mongoid でこの問題を解決するにはどうすればよいでしょうか。

これは、Rails update メソッドを使用して Mongoid のデータベース レコードを更新できないということですか?

4

2 に答える 2

1

私は

リソース:ファミリ

routes.rbの先頭へ。そして今、それはうまくいきます。

なぜそうなのか、わからないでください。

于 2013-09-23T08:53:30.903 に答える
0

Rails はデフォルトで英数字の ID をサポートしておらず、整数を想定しています。

ID を英数字にする必要がある場合は、いくつかの変更を加える必要があります。次のリソースを参照してください。

于 2013-09-16T06:57:45.820 に答える