2011-07-17 7 views
1

私が使用している唯一のリモートフォームではありませんが、ここでは問題は確認できません。これは、すべての行に独自のフォームとインラインフォームフィールドがあるシンプルなテーブルです。追加時にフォームが動作しません:remote => true

<% for temporary_address in @temporary_addresses %> 

    <tr id="row-<%= temporary_address.id -%>"> 
     <%= form_for temporary_address, :remote => true do |form| %> 

      <td> 
       <%= link_to "x", temporary_address, :method => :delete, :remote => true %> 
       <%= form.submit "s" %> 
      </td> 

      [... form fields ...] 
     <% end %> 
    </tr> 

<% end %> 

しかし、これは場合にのみ動作します:リモート=> trueが使用されないです。

resources :temporary_addresses 

はルートファイルにあります。リンクを削除していて、フォームが使用されていないときにも動作しています:remote => true。

リモートでを提出押す=>真は、次の応答

Started POST "/temporary_addresses/12" for 127.0.0.1 at 2011-07-17 12:46:15 +0200 
    Processing by TemporaryAddressesController#update as HTML 
    Parameters: {[...] "commit"=>"s", "temporary_address"=>{[...]}, "id"=>"12"} 

とリモート=>真作品なし

Started POST "/temporary_addresses/12" for 127.0.0.1 at 2011-07-17 12:45:26 +0200 

ActionController::RoutingError (No route matches "/temporary_addresses/12") 

を提出を与える誰かがこれについての手掛かりを持っていますか?

EDIT 1 link_to:remoteを削除してチェックするレコードを破棄しました。同じエラーが...

レンダリングされたフォームは、次のようになります。

<tr id="row-1"> 
    <td> 
    </td> 

    <form accept-charset="UTF-8" action="/temporary_addresses/1" class="edit_temporary_address" data-remote="true" id="edit_temporary_address_1" method="post"> 

     <div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /> 
      <input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="vpFbYO7L9fVtBsWej37FUBobraYjjdWA/F8AjWTwC7A=" /> 
     </div> 

      <td> 
       <input id="temporary_address_firstname" name="temporary_address[firstname]" size="30" type="text" value="John" /> 
      </td> 
      <td> 

       <input id="temporary_address_lastname" name="temporary_address[lastname]" size="30" type="text" value="Doe" /> 
      </td> 
      <td> 
       <input id="temporary_address_email" name="temporary_address[email]" size="30" type="text" value="[email protected]" /> 
      </td> 
      <td> 
        New record 
      </td> 
      <td> 
       <input id="temporary_address_submit" name="commit" type="submit" value="save" /> 
      </td> 

     </form> 
</tr> 
+0

実際のメソッドは、 '_method'というパラメータで決定されます。あなたがjavascriptを介してリクエストを送信すると、このパラメータが実際には見つからないように見えます。 rails.jsとレンダリングされたフォームの例を投稿できますか? – moritz

+0

あなたのフォームのどこかに ':remote => true'というボタンがありますか? –

+0

@dylanそこにはlink_to deleteもありますが、これもリモートです。以上です。 – pduersteler

答えて

0

を解決します!

シンプルなもの.. Firefoxは、有効なhtmlではないものを並べ替えます。上記の出力はソースコードです。これで、生成されたソースコード(Web開発ツールバーのおかげで)がわかりました。問題は明らかです。div:display:noneで生成された隠しフォームフィールドは、フォームの外に移動しました。

関連する問題