Rails 3: form_for игнорирует метод настройки

Пользователь имеет возможность редактировать информацию о своей кредитной карте, например:

Кредитные картыКонтроллер:

class CreditCardsController < ApplicationController
    before_filter :authenticate_user!
    respond_to :js

    def edit
      @cc = current_user.credit_cards.where(:id => params[:id]).first
      respond_with @cc
  end

end

_form.html.erb:

<%= form_for @cc, :remote => true, :html => { :method => :put } do |f| %>
    <div id="cancel-subscription" class="modal-content">
        <div class="header dotted-border">
            <h2>Billing Information</h2>
            <p>Edit the fields below to update your information</p>
        </div>
        <div class="content dotted-border">
            <h2>Credit Card</h2>
        </div>
    </div>
<% end %>

По какой-то причине form_for игнорирует параметр :method, даже если я его отключу. Он продолжает устанавливаться на post. Это неверно, так как я редактирую/обновляю запись CC. Кто-нибудь еще сталкивается с этой проблемой?


person dennismonsewicz    schedule 29.08.2012    source источник
comment
Я считаю, что это нормально. Чтобы понять, как Rails обрабатывает PUT и DELETE в формах. Вызывается ли действие обновления?   -  person veritas1    schedule 29.08.2012
comment
Да, я вытащил мозги.. Я забыл, что Rails добавляет скрытый ввод в форму с _method, установленным на то, что вы указали.   -  person dennismonsewicz    schedule 29.08.2012


Ответы (1)


Просто добавляю

 :html => { :method => put }

не будет работать, потому что form_for генерирует скрытый элемент _methode с формой при обновлении и удалении.

просто используя

 :method => "put"

по форме может работать

person maximus ツ    schedule 29.08.2012
comment
спасибо, что указали на то, над чем я дурачился! Я забыл, что Rails добавляет метод скрытого ввода, чтобы контролировать, какой метод будет выбран при отправке формы. - person dennismonsewicz; 29.08.2012