1

ソースを調べて、これの原因を突き止めようと思いますが、ここにいる誰かがおそらく以前にこれに遭遇したことがあると思います... 私は通常の form_for を実行しています:

<% form_for(@myobj) do |f| %>

しかし、それが生成している URL は次のとおりです。

form action="/myobjs/%23%3CMyobj:0x105f03ec0%3E" class="edit_myobj" id="edit_myobj_13" method="post">

もちろん、id == 13の場合、アクション「/ myobjs / 13」を生成する必要がある場合。オブジェクトがその ID を正しく返していることを確認しました。もちろん、form_for は実際に ID を使用してフォームの ID を適切に設定しています (上記のように)。フォームの URL。以前にこれに遭遇し、解決策を持っている人はいますか?

前もって感謝します...

4

2 に答える 2

0

のような新しいオブジェクトのフォームを作成しようとしたときにのみ、これが発生しました<% form_for(Widget.new) do |f| %>モデルでto_param メソッドをオーバーライドして、何が起こっているかを確認できるかどうかを確認してください。

def to_param
  (id = self.id) ? id.to_s : 'NO ID FOUND! Dig for bugs!'
end

ActiveRecord::Base から継承しないため、to_param を自分で実装する必要があります。ActiveRecord の to_param のソース コードは次のとおりです。

def to_param
  # We can't use alias_method here, because method 'id' optimizes itself on the fly.
  (id = self.id) ? id.to_s : nil # Be sure to stringify the id for routes
end

そして、あなたの状況で動作するはずです。

于 2010-02-23T01:16:33.360 に答える
0

モデルのルートは設定されていますか?

于 2010-02-22T23:32:47.873 に答える