Проблема при передаче аргумента контроллеру при отправке формы - PullRequest
0 голосов
/ 15 марта 2012

В Rails 2.3.8 у меня есть контроллер кредитных карт, которому нужен customer_id.Я использую before_filter и метод, чтобы получить идентификатор клиента.Я использую пути, такие как new_admin_credit_card_path (: customer_id => @ customer.id), чтобы добраться до страниц, обрабатываемых контроллером кредитной карты.У меня проблемы с отправкой формы для создания или редактирования кредитных карт.Идентификатор клиента либо не передается, либо передается, но действие не отвечает должным образом.Вот что я пытаюсь сделать в своей форме:

<% form_for :credit_card, 
:url => admin_credit_cards_path(:customer_id => @customer.id) do |f| %>

  ...BLAH BLAH CODE BLAH...

  <%= f.submit %>

<% end %>

Вот ошибка, которую я получаю:

Ошибка маршрутизации: admin_credit_card_url не удалось сгенерировать из {: customer_id => 37165,: controller => "admin / credit_cards ",: action =>" show "}, ожидается: {: controller =>" admin / credit_cards ",: action =>" show "}, diff: {: customer_id => 37165}

Я также пробовал это:

<% form_for (:credit_card, @credit_card, :url => { :controller => "admin/credit_cards", 
 :action => "update" } ) do |f| %>

И я получаю

Неизвестное действие

На 37762 не ответили никакие действия.id это действие.

Вот мои методы создания и обновления в контроллере:

def create
  @credit_card = scope.new(params[:credit_card])
  set_modified @credit_card

respond_to do |format|
  if @credit_card.save
    flash[:notice] = 'CreditCard was successfully created.'
    format.html { redirect_to admin_credit_card_path(:customer_id => @customer.id) }
    format.xml  { head :created, :location => admin_credit_card_url(:customer_id =>     
@customer.id ) }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @credit_card.errors.to_xml }
    end
  end
end


def update
@credit_card = scope.find(params[:id])
set_modified @credit_card

respond_to do |format|
  if @credit_card.save
    flash[:notice] = 'CreditCard was successfully updated.'
    format.html { redirect_to admin_credit_card_path(:customer_id => @customer.id ) }
    format.xml  { head :ok }
  else
    format.html { render :action => "edit" }
    format.xml  { render :xml => @credit_card.errors.to_xml }
    end
  end
end

1 Ответ

1 голос
/ 15 марта 2012

Вы должны передать customer_id как скрытое поле в форме, а не как часть помощника пути.

...