2011-08-10 9 views
2

コントローラ上のdestroyメソッドの確認として機能するフォームを作成しようとしています。私のルートでは、私が持っている:私のdelete.html.erbでRailsでルートを削除するフォームを作成する方法

resources :leagues do 
    get 'delete', :on => :member 
end 

を、私はのために次のことを持っている:だから

def current_league 
    @current_league ||= League.find_by_id(params[:id]) 
end 

<% form_for current_league, :html => {:method => :delete} do |form| %> 
    <%= form.submit 'Yes' %> 
    <%= form.submit 'No', :name => 'cancel' %> 
<% end %> 

current_leagueはで定義されたヘルパー関数です問題は、生成されるフォームは、method = "post"の形式で表示されるように、リーグモデルのみを編集することです。

<form accept-charset="UTF-8" action="/leagues/1" class="edit_league" id="edit_league_1" method="post"> 
    <div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /> 
    <input name="_method" type="hidden" value="delete" /> 
    <input name="authenticity_token" type="hidden" value="abcdefg" /> 
    </div> 
    <input id="league_submit" name="commit" type="submit" value="Yes" /> 
    <input id="league_submit" name="cancel" type="submit" value="No" /> 
</form> 

どうすればこの問題を解決できますか?

答えて

6

私はすでに動作すると思います。レールにしかしhttp://guides.rubyonrails.org/form_helpers.html#how-do-forms-with-patch-put-or-delete-methods-work-questionmark

をガイドとして、それがフォームを送信することになると、ほとんどのブラウザでは、「GET」以外の方法や「POST」をサポートしていません。あなたは、出力形式で見るよう

がある

Railsは所望の方法を反映するように設定されている「_method」という名前の隠し入力、とPOSTを介して他の方法をエミュレートすることによって、この問題をworks`around

<form accept-charset="UTF-8" action="/leagues/1" class="edit_league" id="edit_league_1" method="post"> 
    .... 
    <input name="_method" type="hidden" value="delete" /> 
    .... 
</form> 

この変数を読み込むと、これはPOSTメソッドではなくDELETEメソッドであることがわかりました。フォーム自体はPOSTですが。

+0

私は> _>あなたの時間を無駄にして申し訳ありません、そしてそれを指摘していただきありがとうございます。私は、テンプレートが失われているエラーを取得していたと、それは更新アクションを呼び出すと思った。 – Max

関連する問題